Зацикленная анимация
Здравствуйте. Как можно сделать анимацию, но чтобы она работала по циклу. Например изменяла отступ от 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, время: 16:00. |