没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
原生原生js实现实现jquery函数函数animate()动画效果的简单实例动画效果的简单实例
下面小编就为大家带来一篇原生js实现jquery函数animate()动画效果的简单实例。小编觉得挺不错的,现在就分
享给大家,也给大家做个参考。一起跟随小编过来看看吧
通过在公司一个月的实习,慢慢的对css跟html算是比较熟悉了,这几天开始研究js,今天用js写了一个jquery的animate函
数,测试了下,性能还可以。个人觉得jquery并不是万能的,因为是个框架,所以有些东西写的比较死,就像animate函数一
样,可选的参数不多有时候可能并不能实现我们想要的效果。
注释的部分是用来测试用的,写代码的过程并不是十分顺利,因为用js平时用的不是很细,都是大体知道方法,也用过,但等
到真正要实现动画函数的时候,细枝末节写错了就可能把人难住了。
函数里面有几个参数解释一下,函数里面有几个参数解释一下,
•obj, 函数的对象
•json, 数值对,形式{attr:”value”, attr: “value”},在这里是指要动画对象的运动属性
•interval, 每执行一次改变的间隔,这里改变的是对象是属性值
•sp, 值变换的速度,使动画具有缓冲效果,而不只是匀速不变(sp为1)的
•fn, 回调函数,执行完动画之后的行为
代码比较简单,只是有几个细节需要注意,在这里提醒一下:代码比较简单,只是有几个细节需要注意,在这里提醒一下:
•对象的属性不必直接声明,所以函数的第一句clearInterval(obj.timer);并不会报错。
•必须为每一个对象分别添加一个定时器,否则互相会影响,一个定时器公用的结果是定时器的多个对象运动出现卡顿。
•son数据格式了解一下,当遍历对象的动画属性的时候,需要icur != json[arr]判断是否每一个属性已经达到目标值。flag的作
用是防止当其中某个属性第一个达到目标值后,clearInterval(obj.timer)清除了定时器,结果其他动画属性并没有达到目标值。
所以在每次遍历的时候初始化flag值为true,只要遇到一个没有达到目标属性的对象,就将flag置为false,直至对象的所有属
性达到目标值,清除定时器。
•speed = speed > 0 ? Math.ceil(speed): Math.floor(speed);
这一句的作用是将属性值取整,因为属性值除了opacity没有小数。
•最后调用的时候注意动画的对象,在使用for循环的时候不能随意使用arr[i]形式,尤其是嵌套循环的时候i的值已经变成了最大
值。
js
function animate(obj, json, interval, sp, fn) {
clearInterval(obj.timer);
//var k = 0;
//var j = 0;
function getStyle(obj, arr) {
if(obj.currentStyle){
return obj.currentStyle[arr]; //针对ie
} else {
return document.defaultView.getComputedStyle(obj, null)[arr];
}
}
obj.timer = setInterval(function(){
//j ++;
var flag = true;
for(var arr in json) {
var icur = 0;
//k++;
if(arr == "opacity") {
icur = Math.round(parseFloat(getStyle(obj, arr))*100);
} else {
icur = parseInt(getStyle(obj, arr));
}
var speed = (json[arr] - icur) * sp;
speed = speed > 0 ? Math.ceil(speed): Math.floor(speed);
if(icur != json[arr]){
flag = false;
}
if(arr == "opacity"){
obj.style.filter = "alpha(opacity : '+(icur + speed)+' )";
obj.style.opacity = (icur + speed)/100;
资源评论
weixin_38720390
- 粉丝: 1
- 资源: 971
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功