JS运动缓冲效果的封装函数如何使用

互联网 18-3-17
这次给大家带来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);

就这样。

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

推荐阅读:

webpack如何动态引入文件

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

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

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 封装
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:JavaScript的异步加载详解

相关资讯