Зацикленная анимация
Здравствуйте. Как можно сделать анимацию, но чтобы она работала по циклу. Например изменяла отступ от 0 до 100 пикселей а потом обратно и так бесконечно раз. Но на js,а не css
Спасибо |
|
То есть тут в замыкании функция,которая после выполнения коллбэком вызывает саму себя?
|
На чистом js такое можно будет сотворить? или не выйдет?
|
Цитата:
Цитата:
|
Цитата:
|
туда сюда обратно
Начинающий-Js-кодер,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #block{ position:absolute; top:0; left:0; width:20px; height:20px; background:#000; } </style> <script> document.addEventListener('DOMContentLoaded', function() { var b = document.querySelector('#block'), m = 0, n = .5; function c() { m += n; if(m == 100 || m == 0) n = -n; b.style.marginLeft = m + 'px'; requestAnimationFrame(c) } requestAnimationFrame(c); document.addEventListener('keydown', function(event) { if(event.key == 'Enter') alert(m); }); }); </script> </head> <body> <div id="block"></div> </body> </html> |
Спасибо.
Рони, а вам отдельное и большое-пребольшое. Теперь хочу спросить-внешнее прерывание в эту функцию можно добавить?например,чтобы нажали клавишу enter и показало текущее значение m? |
Цитата:
|
Цитата:
|
Цитата:
if (abracadabra) requestAnimationFrame(c) function noanimate() {abracadabra = false} |
Начинающий-Js-кодер,
жмите 'Enter' для старт/стопа анимации <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #block{ position:absolute; top:0; left:0; width:20px; height:20px; background:#000; } </style> <script> document.addEventListener('DOMContentLoaded', function() { var b = document.querySelector('#block'), m = 0, n = .5, abracadabra = true; function c() { if (abracadabra) m += n; if(m == 100 || m == 0) n = -n; b.style.marginLeft = m + 'px'; requestAnimationFrame(c) } requestAnimationFrame(c); document.addEventListener('keyup', function(event) { if(event.key == 'Enter') startStopAnimate(); }); function startStopAnimate() {abracadabra = !abracadabra} }); </script> </head> <body> <div id="block"></div> </body> </html> |
Рони,снова спасибо большое.
сейчас пытаюсь реализовать toggle для style. marginLeft обозначил mL, marginRight - mR теперь при:b.style.mL = m + 'px'; перестало работать. Почему так? Как можно обойти данную проблему? |
Извиняюсь,не так.
Делаю так: var curMargin=marginLeft; тогда b.style.curMargin = m + 'px'; перестает работать код. почему? |
Начинающий-Js-кодер,
b.style[curMargin] = |
Понял.Спасибо большое
|
Часовой пояс GMT +3, время: 17:46. |