js运动动画的八个知识点(2)

  1.在改变节点宽度(移入大,移除小)的定时器中,如果给节点添加一个border边框,那么在移入的时候比目标节点小,移出的时候比目标节点大。注意width+padding+scrollbar(滚动条)+border,所以原因就是每次offset都会增加border*2-(定时器中每次减少的数值)。

  2.解决以上问题的办法就是在行内写入width,并且使用parseInt(oDiv.style.width)代替offsetLeft,但是并不能总是写在行内,所以我们定义一个函数,获取链入样式:

复制代码 代码如下:


  function getStyle(obj,attr){
    if(obj.currentStyle){
      return obj.currentStyle[attr];                       //ie浏览器 
    }
    else{
      return getComputerStyle(obj,false)[attr];          //其他浏览器
    }
  }

  3.对于font-size这种,在js里只有fontSize这一种写法。

知识点六:任意属性值

  1.所有的offset-的都会有小bug,要用getStyle函数,这个函数经常和parseInt()一起用,并通常用变量保存。

  2.在写style.width的时候,也可以写成style['width']。  

  3.对于多物体的属性值调整,可以将样式作为参数封装一下,这样多物体属性的函数就包括了(obj,attr,iTarget)这三个属性值。

  4.以上的这个运动框架是不适合于透明度变化的,因为透明度都是小数的,因为两个原因,第一是parseInt,第二是attr=...+px,这里我们可以用一个if判读来对透明度进行单独处理,将parseInt换成parseFloat,去掉px。

  5.计算机本身是有一个bug的,0.07*100并不等于7,所以我们引入一个函数是Math.round(),这是一个四舍五入的值。

知识点七:链式运动

  1.引入move.js框架。

  2.传入一个回调函数fn(),用if判断,如果有fn(),那么执行fn()。

知识点八:同时运动

  1.如果写两个运动函数来控制同时运动,会发生函数覆盖。

  2.使用json这个知识点,json的循环是使用for(i in json),运动函数的参数为obj,json,fn。

  3.没有iTarget这个值了,取而代之的是json[attr].

  写到这里,就已经完全结束了,希望大家能够喜欢。也希望对大家学习js运动动画能够有所帮助。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgfzxy.html