### [JS运动缓冲效果的封装函数如何使用](https://www.prosaas.cn/article/17696) **Published:** 2018-03-17T07:36:37 **Author:** 5201314 **Excerpt:** 这次给大家带来JS运动缓冲效果的封装函数如何使用,使用JS运动缓冲效果的封装函数的注意事项有哪些,下面就是实战… 这次给大家带来JS运动缓冲效果的封装函数如何使用,使用JS运动缓冲效果的封装函数的注意事项有哪些,下面就是实战案例,一起来看一下。 之前经常写运动函数,要写好多好多,后来想办法封装起来。(运动缓冲)。 /\*   物体多属性同时运动的函数   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); } 以上封装函数也可以用于单个属性,多样式运动,比如: bufferMove(obj,{"left":200,"width":400,"opacity":80},fn,8); 就这样。 相信看了本文案例你已经掌握了方法,更多精彩请关注知企PROSAAS其它相关文章! 推荐阅读: webpack如何动态引入文件 微信小程序的圆形进度条怎么做 以上就是JS运动缓冲效果的封装函数如何使用的详细内容,更多请关注知企PROSAAS其它相关文章! **Categories:** 后端开发 ---