改变透明度 封装一个能够支持各种样式属性变化的函数
Edit me

透明度的改变

透明度的改变和变速运动没有很大的区别。

但是,需要注意的是,filter属性只适合标准浏览器。为了兼容IE8及以下版本的服务器,需要使用alpha属性。

多div框宽度伸缩

需求:有多个div框,要求封装一个函数,当鼠标对这些div框做移入和移出操作时,将改变div框的宽度。

需要注意以下几点:

  • 需要为每个div框设置独立的计时器。只要获取一个包含所有div框的数组,然后对它进行遍历,并未每个元素设置独立的计时器(array[i].timer)即可。

  • 为遍历到的元素绑定计时器时,obj形参位置可以传入this,表示调用该函数的对象。

offset dimension的副作用

offsetWidth是指内容宽度(obj.style.width)和左右边框的总和。那么,当速度很小(比如说-1)的时候,如果直接用obj.style.width = offsetWidth + speed + 'px'来改变宽度的话,虽然负数的速度是想要缩小宽度,但是计算下来实质上却是在增加宽度。所以这种情况下,offsetWidth明显不适用了。

div框完成两个连续的操作

需求:鼠标移入时,增加边框宽度到100像素,完成后,伸长div框的高度到400像素。移出时,先缩小高度,然后缩小边框宽度。

  1. 考虑到是两个连续的操作,所以要在封装的运动框架中传入一个回调函数,作为参数。

  2. 获取起点/当前css的值。
  3. 计算速度。

  4. 要考虑到如果传入了回调函数,那么需要在结束计时器时(到达目标位置),调用回调函数。

  5. 定义运动时,要考虑到如果是opacity属性,如何兼容不同的浏览器。