animate默认时长所带来的问题及解决

news/2024/7/6 3:56:17

一、需求描述

做一个进度条长度逐渐减少的动画,当进度条长度小于等于0时,关闭动画,并弹出透明底板显示新提示。

二、问题描述

初始代码如下:

//设置进度条初始长度
var progressLength = 180;    
//设置一个定时器    
var timer = setInterval(function () {//开始游戏后进度条逐渐消失progressLength -= 10;$(".progress").animate({width: progressLength});console.log("hh");//如果进度条走到尽头if (progressLength <= 0) {clearInterval(timer);$(".over").fadeIn(100);}                        
}, 50);

遇到问题:

进度条递减的速度快于动画速度,导致动画还没执行完,progressLength就已经≤0,底板就弹出来了。

三、问题解决

首先,导致问题的原因是:

animate动画执行有默认时长,即1000(1s),就是第二个参数。

而先前设置的定时器执行时长是50,导致两厢不匹配,即animate函数域里外不是一个速度。

解决方法:(消灭时间差)

1.设置animate第二个参数,使执行时长等于外面定时器的执行时长;

(不推荐,因为两个函数之间总有执行上的时间差)

//设置进度条初始长度
var progressLength = 180;    
//设置一个定时器    
var timer = setInterval(function () {//开始游戏后进度条逐渐消失progressLength -= 10;$(".progress").animate({width: progressLength},50);console.log("hh");//如果进度条走到尽头if (progressLength <= 0) {clearInterval(timer);$(".over").fadeIn(100);}                        
}, 50);

2.改animate为css,这样就变成静态函数,没有时间差了

//设置进度条初始长度
var progressLength = 180;    
//设置一个定时器    
var timer = setInterval(function () {//开始游戏后进度条逐渐消失progressLength -= 10;$(".progress").css({width: progressLength});console.log("hh");//如果进度条走到尽头if (progressLength <= 0) {clearInterval(timer);$(".over").fadeIn(100);}                        
}, 50);

 

转载于:https://www.cnblogs.com/bbcfive/p/10144629.html


http://lihuaxi.xjx100.cn/news/236584.html

相关文章

使用 spring boot 开发通用程序

2019独角兽企业重金招聘Python工程师标准>>> tag: spring 学习笔记date: 2018-03spring 是什么&#xff1f;spring 核心是应用组件容器&#xff0c;管理组件生命周期&#xff0c;依赖关系&#xff0c;并提倡面向接口编程实现模块间松耦合。 spring boot 是什么&…

蒙特卡洛粒子滤波定位算法_粒子滤波——来自哈佛的详细的粒子滤波器教程【1】...

本文原版链接&#xff1a;https://www.seas.harvard.edu/courses/cs281/papers/doucet-johansen.pdf本文是哈佛大学相关研究人员于2008年发表的一篇关于粒子滤波的详细教程&#xff0c;至今已被引用1687次。目录&#xff1a;介绍Introduction1.1 序言Preliminary remarks1.2 教…

微软开源数据处理引擎 Trill,每天可分析万亿次事件

微软近日开源了数据处理引擎 Trill&#xff0c;它每天能够分析万亿次事件。项目地址&#xff1a;https://github.com/Microsoft/trill当下每毫秒处理大量数据正成为一种常见的业务需求&#xff0c;此次微软开源的 Trill&#xff0c;据说每秒能够处理高达数十亿事件&#xff0c;…

搭建本地https

生成证书 1. 使用openssl生成密钥privkey.pem&#xff1a; openssl genrsa -out privkey.pem 1024/2038 2. 使用密钥生成证书server.pem&#xff1a; openssl req -new -x509 -key privkey.pem -out server.pem -days 365 证书信息可以随便填或者留空&#xff0c;只有Common Na…

python怎么切片提取_彻底搞懂Python切片操作

在利用Python解决各种实际问题的过程中&#xff0c;经常会遇到从某个对象中抽取部分值的情况&#xff0c;切片操作正是专门用于完成这一操作的有力武器。理论上而言&#xff0c;只要条件表达式得当&#xff0c;可以通过单次或多次切片操作实现任意切取目标值。切片操作的基本语…

从0到1构建网易云信IM私有化

本文来源于MOT技术管理课堂杭州站演讲实录&#xff0c;全文 2410 字&#xff0c;阅读约需 5分钟。网易云信资深研发工程师张翱从私有化面临的问题及需求说起&#xff0c;分享了网易云信IM私有化的解决方案和具体实践。想要阅读更多技术干货、行业洞察&#xff0c;欢迎关注网易云…

vue中动态样式不起作用? scoped了解一下

vue中style标签使用属性scoped的注意事项 style上添加属性scoped可以实现样式私有化&#xff0c;但是在使用动态样式时&#xff0c;样式会不起作用。可以先去掉scoped转载于:https://www.cnblogs.com/zuojiayi/p/9364347.html

mac远程连接windows工具_Windows远程MAC系统

第一步、在 Mac 上设置好屏幕共享1. 1先请在苹果 Mac 电脑上的“系统偏好设置”窗口中打开“共享”功能&#xff0c;如图所示接着在共享窗口中的左侧点击启用“屏幕共享”选项&#xff0c;如图所示当屏幕共享功能打开以后&#xff0c;请点击“电脑设置”按钮&#xff0c;如图所…