分享一个简易的动画效果类,思路源于JavaScript DOM编程艺术,这本书是我JavaScript的启蒙书,看过四篇,至今时常翻起.我想也是每个JavaScript初学者的必备书.Mr.Think非常推崇这本书,真的很棒!
思路其实很基础,很简单,主要是通过setTimeout()方法,并利用CSS绝对定位来以改变图片位置以实现动画效果.纯DOM方式编写,兼容所有支持JavaScript的浏览器及其他API.
动画效果类核心JavaScript代码:点此查看DEMO
//@Mr.Think---简易动画类
function moveElem(elemId, final_x, final_y, interval){
if (!document.getElementById)
return false;
if (!document.getElementById(elemId))
return false;
var elem = document.getElementById(elemId);
if (elem.movement)
clearTimeout(elem.movement);
if (!elem.style.left)
elem.style.left = "0px";
if (!elem.style.top)
elem.style.top = "0px";
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
if (xpos == final_x && ypos == final_y)
return true;
if (xpos < final_x) {
var divisor = Math.ceil((final_x - xpos) / 10);
xpos = xpos + divisor;
}
if (xpos > final_x) {
var divisor = Math.ceil((xpos - final_x) / 10);
xpos = xpos - divisor;
}
if (ypos < final_y) {
var divisor = Math.ceil((final_y - ypos) / 10);
ypos = ypos + divisor;
}
if (ypos > final_y) {
var divisor = Math.ceil((ypos - final_y) / 10);
ypos = ypos - divisor;
}
elem.style.left = xpos + "px";
elem.style.top = ypos + "px";
var repeatelem = "moveElem('" + elemId + "'," + final_x + "," + final_y + "," + interval + ")";
elem.movement = setTimeout(repeatelem, interval);
}
这种图片轮显效果很常见,博主的好像代码很简单,有时间研究一下,
呵呵,谢谢分享。
[回复]
呵呵。我刚看完英文版的,的确是本难得的好书!
[回复]
JavaScript DOM编程艺术一次没都没看下去,前面的例子不会后面的就不想看了
[回复]
Mr.Think 回复:
五月 4th, 2010 at 12:11
@青衣,不可浮躁,静下心来,按照作者的思路一节节看下去,切记边看边练,作者会带给你很多惊喜.技术之路,只有苦苦的思考加的不断地练习,别无他途.
[回复]