一个简单的纵横向动画效果类

分享一个简易的动画效果类,思路源于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);
}
共有 4 条评论.

发表评论3,136 Views

  1. 这种图片轮显效果很常见,博主的好像代码很简单,有时间研究一下,
    呵呵,谢谢分享。

    [回复]

  2. 呵呵。我刚看完英文版的,的确是本难得的好书!

    [回复]

  3. JavaScript DOM编程艺术一次没都没看下去,前面的例子不会后面的就不想看了

    [回复]

    Mr.Think 回复:

    @青衣,不可浮躁,静下心来,按照作者的思路一节节看下去,切记边看边练,作者会带给你很多惊喜.技术之路,只有苦苦的思考加的不断地练习,别无他途.

    [回复]

发表评论[无需注册]