Анимация движения
Здравсвуйте.
Подскажите пожалуйста. Есть код хтмл <div id="out" onclick="animate('example', function(p) {return p;})"> <div id="example">Hello world</div> </div> и джаваскрипт var element = document.getElementById("example"); var from = 0; // Начальная координата X var to = 500; // Конечная координата X var duration = 1000; // Длительность - 1 секунда var start = new Date().getTime(); // Время старта var computedStyle = window.getComputedStyle(element, null); var style = computedStyle.left; setTimeout(function() { var now = (new Date().getTime()) - start; // Текущее время var progress = now / duration; // Прогресс анимации var result = (to - from) * delta(progress) + from; element.style.left = result + "px"; if (progress < 1) // Если анимация не закончилась, продолжаем setTimeout(arguments.callee, 10); }, 10); При клике должна срабатывать анимация, но ничего не работает. Не могу понять, что не так сделал, подскажите пожалуйста |
а где функция delta ?
И вообще смотрите в firebug, он вам многое может рассказать. |
а у div'а стоит позишен абсолют?
кстати и одной функции нету |
Цитата:
|
У меня теперь в другом проблема, пишу код
<div id="out"> <div id="example"></div> </div> var element = document.getElementById("example"); var out = document.getElementById("out"); var from = 0; // Начальная координата X var to = 500; // Конечная координата X var duration = 1000; // Длительность - 1 секунда var start = new Date().getTime(); // Время старта out.onclick = function() { setTimeout(function() { var now = (new Date().getTime()) - start; // Текущее время var progress = now / duration; var result = (to - from) * delta(progress) + from; element.style.left = result + "px"; if (progress < 1) // Если анимация не закончилась, продолжаем setTimeout(arguments.callee, 10); }, 10); }; function delta(progress) { return progress; } Анимация получается , какая-то "рваная", див стартует резко с половины пути, а если кливать повторно, то див вообще исчезает. Что не так, подскажите пожалуйста |
Уже переписал код
<div class="example_path"> <div id="example" class="example_block"></div> </div> window.onload = function() { var element = document.getElementById("example"); var from = 0; // Начальная координата X var to = 500; // Конечная координата X var duration = 1000; // Длительность - 1 секунда var start = new Date().getTime(); // Время старта element.onclick = setAnimate } function setAnimate() { setTimeout(function() { var now = (new Date().getTime()) - start; // Текущее время var progress = now / duration; var result = (to - from) * delta(progress) + from; element.style.left = result + "px"; if (progress < 1) // Если анимация не закончилась, продолжаем setTimeout(arguments.callee, 10); }, 10); } function delta(progress) { return progress; }; Все равно не работает, при клике, ничего не срабатывает. Помогите, что не так :( |
Armen,
учитесь пользоваться поиском, чтобы не задавать однотипных вопросов |
Цитата:
На jQuery я это реализовал |
Цитата:
Там 11 страниц текста, куча кода и теории, и на jQuery всего пара функций в качестве альтернативных примеров решения задачи. Вы уже два года на форуме в статусе плавающего новичка, если вы не начнете думать, и пытаться хоть немного самостоятельно решать свои микропроблемы, то помогать вам никто не будет. |
Часовой пояс GMT +3, время: 20:06. |