我希望有一个类似的效果,jQuery slidedown,但没有使用jQuery或任何其他库。我知道这是“可能”,因为jQuery中的任何东西都可以在纯JavaScript中完成。更难。
解决方法
这里是一个很好的小块代码,我从头写,这是纯粹的时间基础。
var minheight = 20; var maxheight = 100; var time = 1000; var timer = null; var toggled = false; window.onload = function() { var controler = document.getElementById('slide'); var slider = document.getElementById('slider'); slider.style.height = minheight + 'px'; //not so imp,just for my example controler.onclick = function() { clearInterval(timer); var instanceheight = parseInt(slider.style.height); // Current height var init = (new Date()).getTime(); //start time var height = (toggled = !toggled) ? maxheight: minheight; //if toggled var disp = height - parseInt(slider.style.height); timer = setInterval(function() { var instance = (new Date()).getTime() - init; //animating time if(instance <= time ) { //0 -> time seconds var pos = instanceheight + Math.floor(disp * instance / time); slider.style.height = pos + 'px'; }else { slider.style.height = height + 'px'; //safety side ^^ clearInterval(timer); } },1); }; };
在这里测试:http://jsbin.com/azewi5/5@H_404_3@