本文介绍JavaScript实现动画效果的封装函数,将从匀速水平移动开始,在此基础上不断增加新功能,如二级标题所示。
匀速水平移动动画
这哥们可以用来写轮播图。
1 | <head> |
JavaScript代码:
1 | <script> |
变速水平移动动画(缓动)
1 | <script> |
封装getStyle()
在进一步写动画改变属性函数之前,我们先来封装一个getStyle()函数,一会儿要用到。
先来看一段css代码:
1 | //CSS部分,这个div有个id值"dv" |
然后我们想打印出这个div的left值,执行代码console.log(document.getElementById(“dv”).offsetLeft); 我们期望看到控制台输出100,然而并没有。因为没有脱标,只有加上了position: absolute之后才会如愿输出100。
如果我们就是不想加上position: absolute,又要怎样获取呢?有两种方法:
1 | //谷歌,火狐支持 |
接下来时兼容代码:
1 | function getStyle(element,attr) { |
完成。这个函数可以得到一个元素的任意一个样式属性值,字符串类型。
动画之改变单个属性的值
在上述动画封装函数的基础上,我们可以进一步写出修改属性值的动画函数,当然这个函数依旧可以实现水平移动动画的效果。
先看效果:
1 | <script> |
动画之改变多个属性的值
在上面改变单个属性的函数代码基础上,使用json格式来存储所要的目的状态。
1 | function my$(id) { return document.getElementById(id); } |
动画之回调函数
回调是什么?
简单讲: 回调是指在另一个函数执行完成之后被调用的函数 —— 因此得名“回调”。
稍复杂地讲: 在 JavaScript 中,函数也是对象。因此,函数可以传入函数作为参数,也可以被其他函数返回。这样的函数称为高阶函数。被作为参数传入的函数就叫做回调函数。
如果我们想要实现下图中的效果,则需要在动画函数中加入作为参数的回调函数。
1 | <script> |
动画之改变透明度与层级
改变透明度和层级这两部分需要进行if判断,代码如下:
1 | <script> |
至此JavaScript封装动画函数实现暂告一段落。