JS 运动缓冲效果封装函数的用法

网友投稿 269 2024-06-15

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);

}

-

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

1

bufferMove(obj,{"left":200,"width":400,"opacity":80},fn,8);

-

就这样。

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

推荐阅读:

webpack如何动态引入文件

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

以上就是JS运动缓冲效果的封装函数如何使用的详细内容

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:js 自定义 trim 函数的用法
下一篇:json 对象大小写转换方法介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~