美文网首页程序员程式学徒
《JavaScript DOM编程艺术》14:动画

《JavaScript DOM编程艺术》14:动画

作者: ZackLive | 来源:发表于2018-10-14 03:25 被阅读12次

    这是《JavaScript学徒》系列的第十四课,今天会介绍《JavaScript DOM编程艺术》第10章动画,学习用JavaScript来实现动画效果。

    本文同步发表于我的个人网站:

    《JavaScript DOM编程艺术》14:动画 - 程式学徒 ZackLive

    教学视频连结

    YouTube

    微博

    腾讯

    B站

    setTimeout & clearTimeout

    movement = setTimeout("moveMessage()", 3000);

    clearTimeout(movement);

    parseInt & parseFloat

    提取数值:

    parseInt("39 steps");

    会得到数值39.

    提取浮点数(带小数点)可以用parseFloat。

    moveElement函数

    function moveElement(elementID, final_x, final_y, interval) {

      var elem = document.getElementById(elementID);

      if (elem.movement) {

        clearTimeout(elem.movement);

      }

      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) {

        xpos++;

      }

      if (xpos > final_x) {

        xpos--;

      }

      if (ypos < final_y) {

        ypos++;

      }

      if (ypos > final_y) {

        ypos--;

      }

      elem.style.left = xpos + "px";

      elem.style.top = ypos + "px";

      var repeat = "moveElement('" +elementID+ "'," +final_x+ "," +final_y+ "," +interval+ ")";

      elem.movement = setTimeout(repeat, interval);

    }

    使用moveElement:

    moveElement("message", 200, 100, 10);

    为元素创建属性

    elem.movement = setTimeout(repeat, interval);

    这样,setTimeout的handler就交给了elem的movement属性,接下来,可以使用:

    if (elem.movement) {

      clearTimeout(elem.movement);

    }

    先判断elem.movement,也就是是否已执行过setTimeout,若是,则清除之前的队列,再执行新的setTimeout。

    Math.ceil, Math.floor & Math.round

    Math.round:四舍五入,取最接近的整数

    Math.ceil:向较大值舍入,取最接近的整数

    Math.floor:向较小值舍入,取最接近的整数

    var dist = 0;

    if (xpos > final_x) {

      dist = Math.ceil( (xpos - final_x)/10 );

      xpos = xpos - dist;

    }

    这样可使动画每次移10之一的距离,达到一开始移动较快,渐渐慢下来的效果。

    《JavaScript DOM编程艺术》完结

    《JavaScript DOM编程艺术》剩下的章节介绍了HTML5、JavaScript的一些框架以及一个综合示例。由于并没有太多新内容或重点不在JavaScript,我就不深入了。其中,值得一提的是JavaScript框架的部分。本书撰写时,jQuery仍是主流,但现在,建议学习React.js或者Vue.js。

    相关文章

      网友评论

        本文标题:《JavaScript DOM编程艺术》14:动画

        本文链接:https://www.haomeiwen.com/subject/iezaaftx.html