JS实现运动缓冲效果的封装函数示例
作者:MaxLucio 发布时间:2023-06-30 14:34:45
标签: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);
就这样。
希望本文所述对大家JavaScript程序设计有所帮助。
来源:https://www.cnblogs.com/lucio110/p/7345286.html


猜你喜欢
- 阅读上一篇:什么是名字空间<meta http-equiv="Content-Type" co
- 使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录。分析问题: &nb
- 一、色彩空间的转换代码如下:#色彩空间转换import cv2 as cvdef color_space_demo(img):
- 世界疫情数据下载请点击》》:疫情数据下载注:此数据是2022年3月12号的结果,其中透明的地方代表确诊人数小于10万人,白色的地方代表无该国
- 本文实例讲述了JavaScript基于Ajax实现不刷新在网页上动态显示文件内容的方法。分享给大家供大家参考。具体如下:下面的JS代码是一个
- 引言:今天又双叒搞新电脑的环境,对于我这个.Net程序员,那就肯定离不开安装 SQL Server 了,网上没有找到很详细的教程,所以决定自
- GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利
- mybatis分页插件pageHelper详解及简单实例工作的框架spring springmvc mybatis3首先使用分页插件必须先引
- yaml文件内容apiVersion: policy/v1beta1kind: PodSecurityPolicymetadata: &nb
- Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Djang
- 安装TensorFlow在Windows上,真是让我心力交瘁,想死的心都有了,在Windows上做开发真的让人发狂。首先说一下我的经历,本来
- 下边是我对部分内容的总结,里边偏向了T-SQL语句实现的总结,对于SQL Server Management Studio中对象管理器的操作
- 通过第三方BeautifulSoup库来爬取op.gg网页静态数据主要思路op.gg网站网站以出场率高低排名,并且列出对位胜率,在高出场率的
- sys模块sys.argv: 实现从程序外部向程序传递参数。位置参数argv[0]代表py文件本身,运行方法 python xx.py 参数
- 找了 很多 关于表格分页 点击事件 请求, table.render 并不支持监听点击事件,所以我就把 table.render 和 lay
- 几天前我在考虑使用 python 从 whatsapp 发送消息。和你们一样,我开始潜伏在互联网上寻找一些解决方案并找到了关于twilio.
- 乍一看到列表推导式你可能会感到疑惑。它们是一种创建和使用列表的简洁方式。理解列表推导式是有用的,因为你可能在其他人的代码里看到列表推导式。下
- 装饰器实现Python 函数重载函数重载指的是有多个同名的函数,但是它们的签名或实现却不同。当调用一个重载函数 fn 时,程序会检验传递给函
- 将json转为结构体时,经常会遇到无法确定某个字段类型的情况。在Go中可以使用interface 任意类型来解决。// convert js
- 实测mysqld –skip-grant-tables这样的命令行,在mysql8中无法成功启动,而且测试了该参数放在ini文件里面也同样无