вот полный код
function animate(opts) {
var start = new Date;
var timer = setInterval(function() {
var progress = (new Date - start) / opts.duration;
opts.step(progress);
if(progress > 1) progress = 1;
if(progress == 1) clearInterval(timer);
}, 15)
return timer;
}
function animateProp(opts) {
var start = opts.start;
var end = opts.end
var prop = opts.prop;
opts.step = function(progress){
opts.elem.style[prop] = start+(end-start)*progress+ 'px';
}
return animate(opts);
}
var div = document.getElementById('opa');
div.onclick = function() {
animateProp({start:0,end:100, prop:'marginLeft', duration:1000, elem:div})
}
Несколько вопросов....
1) При клике вызывается ф-я animateProp(а тут ее параменты)
но почему они заключены в {}, если это объект, не разумнее было было сделать так : animateProp(opts= {start:....}) ???
2) При вызове ф-и animateProp, те параметры, которые указываются в ({}) - обращаются к ПЕРЕМЕННЫМ? Ну например в параметре указано animateProp({start:0}), а в этой же ф-и :
animateProp(opts) {var start = opts.start}
так свойство {start:0}, обращается вначале к var start, а затем переход в opts.start ?
Если да, то почему мы не можем поставить (без var) просто opts.start,
ведь opts.elem имеется и работает....