анимация фона
есть код, я доволен, все работает даже в ие, но мне всёравно кажется, что код кривой, код заставляет ехать фон влево, у меня есть его реализация с jQwery и mootools, но она тормозит и много весит, это намного проще, но хотел бы узнать, что тут лишнего, и что лучше добавить:
<div onclick="animate('ex1', function(p) {return p;})" id="ex1">
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
</div>
function animate(id, delta, dur) {
element = document.getElementById(id);
from = 0;
to = 1;
duration = dur || 100;
start = new Date().getTime();
setTimeout(function() {
var now = (new Date().getTime()) - start;
var progress = now / duration;
var result = (to - from)*delta(progress)+from;
element.style.backgroundPosition = "-"+result+"mm 0mm";
//element.innerHTML = result;
if (true)
setTimeout(arguments.callee, 1);
}, 10);
}
|
function animate(id, delta) {
element = document.getElementById(id);
from = 0;
to = 1;
duration = 100;
start = new Date().getTime();
setTimeout(function() {
var now = (new Date().getTime()) - start;
var progress = now / duration;
var result = (to - from)*delta(progress)+from;
element.style.backgroundPosition = "-"+result+"mm 0mm";
//element.innerHTML = result;
setTimeout(arguments.callee, 1);
}, 10);
}
убрал лишнее |
Не то, что бы лишнее, просто не понимаю, зачем так сложно:
(new Date().getTime()) - start;??? Я бы написал так: new Date - start;А вот что element, from, to и т.д. - глобальные переменные, - плохо! Будет конфликт, если запустить несколько функций. |
Sweet,
function animate(id) {
element = document.getElementById(id);
from = 0;
to = -1;
duration = 100;
start = new Date().getTime();
setTimeout(function() {
now = new Date() - start;
progress = now / duration;
result = (to - from)*progress+from;
element.style.backgroundPosition = result+"mm 0mm";
//element.innerHTML = result;
setTimeout(arguments.callee, 1);
}, 10);
}
пока это получилось, я думаю переменные убрать, прописать в формеле все, что можно |
Sweet,
function animate(id) {
element = document.getElementById(id);
duration = 100;
start = new Date().getTime();
setTimeout(function() {
now = new Date() - start;
progress = now / duration;
result = -1*progress;
element.style.backgroundPosition = result+"mm 0mm";
//element.innerHTML = result;
setTimeout(arguments.callee, 1);
}, 10);
}
получилось так |
function animate(id) {
element = document.getElementById(id);
duration = 100;
start = new Date()
setTimeout(function() {
now = new Date() - start;
progress = now / duration;
result = -1*progress;
element.style.backgroundPosition = result+"mm 0mm";
//element.innerHTML = result;
setTimeout(arguments.callee, 1);
}, 10);
}
|
function animate(id) {
element=document.getElementById(id);
start=new Date()
setTimeout(function() {
now=new Date() - start;
progress=now / 100;
result=-1*progress;
element.style.backgroundPosition=result+"mm 0mm";
setTimeout(arguments.callee,1);
},10);
}
|
qwertyuiop,
качественно флудишь! Ты не видишь кнопочку "Ред." в правом нижнем углу сообщений? Рекомендую пользоваться ей. И используй var! |
Sweet,
ок, ток зачем вар? может глупый вопрос, но всё же, я никогда не использую |
Sweet,
понял, чтобы за пределы функции не лезли |
| Часовой пояс GMT +3, время: 19:38. |