我是靠谱客的博主 舒心牛排,这篇文章主要介绍JS运动缓冲效果的封装函数如何使用,现在分享给大家,希望可以做个参考。

这次给大家带来JS运动缓冲效果的封装函数如何使用,使用JS运动缓冲效果的封装函数的注意事项有哪些,下面就是实战案例,一起来看一下。

之前经常写运动函数,要写好多好多,后来想办法封装起来。(运动缓冲)。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* 物体多属性同时运动的函数 obj:运动的物体 oTarget:对象,属性名为运动的样式名,属性值为样式运动的终点值 ratio:速度的系数 */ function bufferMove(obj, oTarget, fn,ratio = 8) { clearInterval(obj.iTimer); obj.iTimer = setInterval(function () { // 此处设定开关bBtn,假设所有的属性均已运动完毕true var bBtn = true; for(var sAttr in oTarget){ // 获取当前值,此处兼容透明度的变化 if(sAttr === 'opacity') { var iCur = parseFloat(getStyle(obj, sAttr) * 100); } else { var iCur = parseInt(getStyle(obj, sAttr)); } // 计算速度,此处可判定方向,如向左或向右,先透明后出现或先出现后透明等 var iSpeed = (oTarget[sAttr] - iCur) / ratio; iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); // 计算下一次的值 var iNext = iCur + iSpeed; // 赋值给对应样式 if(sAttr ==='opacity') { obj.style.opacity = iNext / 100; obj.style.filter = 'alpha(opacity=' + iNext +')'; } else { obj.style[sAttr] = iNext + 'px'; } // 清除定时器,当前的位置和终点值是否相等,相等则说明结束 if(iNext !== oTarget[sAttr]) { bBtn = false; } } // 如果bBtn的值为true,则说明所有的属性均已运动完毕,回调函数fn() if(bBtn) { clearInterval(obj.iTimer); if(fn){ fn(); } } }, 50); }
登录后复制

以上封装函数也可以用于单个属性,多样式运动,比如:

复制代码
1
bufferMove(obj,{"left":200,"width":400,"opacity":80},fn,8);
登录后复制

就这样。

相信看了本文案例你已经掌握了方法,更多精彩请关注靠谱客其它相关文章!

推荐阅读:

webpack如何动态引入文件

微信小程序的圆形进度条怎么做

以上就是JS运动缓冲效果的封装函数如何使用的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是舒心牛排最近收集整理的关于JS运动缓冲效果的封装函数如何使用的全部内容,更多相关JS运动缓冲效果内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(97)

评论列表共有 0 条评论

立即
投稿
返回
顶部