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

一、需求描述

做一个进度条长度逐渐减少的动画,当进度条长度小于等于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

时间: 2024-10-14 21:10:29

animate默认时长所带来的问题及解决的相关文章

scala实战之spark用户在线时长和登录次数统计实例

接触spark后就开始学习scala语言了,因为有一点python和java的基础学习起来还行,今天在这里把我工作中应用scala编程统计分析用户行为日志的实例和大家分析一下,我这里主要讲一下用户的在线时长统计和登录次数统计算法实现过程. 第一步 编程环境:首先你得有spark安装包 你可以先不用本地安装spark,但是可以通过import spark-assembly-1.6.2-hadoop2.6.0.jar包来完成程序调试 另外需要scala的运行环境,我用的版本:scala-sdk-2.

关于采集用户页面停留时长的一些思路

关于  记录用户在页面停留时长的一些思路 客户端===================================================================== (全部采用ajax后台发送数据) 进入页面时,开始计时,发送的数据为: {id:"",type:"startTime",url="当前浏览的页面地址"} 响应的数据:{code:"响应代码",msg="错误信息",id=&

bash 统计在线时长最长的十个玩/统计一天内一直处于不活跃状态的玩家的百分比

1.某游戏的客户端每隔5分钟会向服务端报告一次玩家的账户积分,如果两次报告的时间间隔不大于5分钟,认为该玩家在这5分钟内在线,假设报告数据的格式如下: IP                   Datetime                Score 223.152.112.238      2014-08-22 12:01:35     54232 现有一天的数据,按时间按序保存,粗略估计玩家数在百万左右,请使用尽量少的硬件资源完成以下请求,统计在线时长最长的十个玩家:如果玩家两次提交的积分

js读写Cookie问题(Cookie存储时长、Cookie存储域)汇总

在采集网站用户行为数据/使用js对用户行为做交互时,经常会使用到Cookie,了解Js Cookie的读写,以及一些细节,非常重要.   什么是Cookie 所谓Cookie,只是一条极为短小的信息,它被浏览器自动地放置在访问用户的电脑硬盘中. 例如:C:\Users\[user]\AppData\Roaming\Microsoft\Windows\Cookies 如上图所示,打开的一个文件里面,标示了一个域下多个Cookie的信息. 检测/判断浏览器是否支持Cookie 在绝大多数浏览器中,可

MacBreakZ 5 for mac(休息提醒控制电脑时长助手)

MacBreakZ 5 for mac专门为不适应长时间电脑工作的人提供帮助,MacBreakZ 5 mac结合高端的人体助理工程学设计,通过监控鼠标以及键盘的使用频率来帮助用户有效且健康的制定作息时间表,并对用户以特别的红黄绿三个级别的提醒目前的健康状态.保证用户对自己的身体健康的监督. MacBreakZ 5 Mac激活版是一款精致的个人人体工学助手,旨在促进健康和高效的计算机使用.它提供了一种获得人体工程学技能的独特方式,可以为您节省许多不适,并保护您免受严重的健康和危及生命的疾病.Mac

MySQL 的连接时长控制--interactive_timeout和wait_timeout

在用MySQL客户端对数据库进行操作时,如果一段时间没有操作,再次操作时,常常会报如下错误: ERROR 2013 (HY000): Lost connection to MySQL server during query ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... 这个报错信息就意味着当前的连接已经断开,需要重新建立连接. 那么,连接建立后,连接的时长是如何确定的呢?

andriod编程中如何获取一段语音的时长?

在android有关语音的应用中,我们可能需要录音的长度,这个长度很好获取,只要在刚刚开始录音的时候获取本地时间,录音结束的时候获取本地时间,之后一减就可以得到他的时间长度. 代码:first = (int)(System.currentTimeMillis()/1000);//当点击录音的时候获取本地时间,除以1000得到时间单位是秒,否则是毫秒. second = (int)(System.currentTimeMillis()/1000);//录音结束的时候获取本地时间         

【Android端 APP 启动时长获取】启动时长获取方案及具体实施

一.什么是启动时长? 1.启动时长一般包括三种场景,分别是:新装包的首次启动时长,冷启动时长.热启动时长 冷启动 和 热启动 : (1)冷启动:当启动应用时,后台没有该程序的进程,此时启动的话系统会分配一个新的进程给应用. (2)热启动:程序的进程依然存在,启动时通过已有进程启动进入到Activity显示页面的,就是热启动,或者从Android官网来看我们获取到的其实是温启动时长,就是Activity不存在的情况. (3)新装包的启动时长: 新装包的启动时长,预估是最长的,并且在5.0以下及5.

LK按作业执行时长优化

新到一家公司,需要折腾点认可出来.然后开始苦逼的优化工作.暂时不吐槽权限问题!!!优化效果优化前,作业历史记录(前30)P图优化前,CPU使用情况有几个作业平均时长2.5~3.5小时,还有很多时长在半小时以上的作业,基本要到11-12点才能完成作业统计.CPU每天7:00-11:00一直维持在比较高的数值.优化后,作业历史记录(前30)P图最近三天的CPU情况最近一天的CPU情况优化后,作业执行时长明显降低,从最近3天执行情况看,9:00前统计作业能够执行完成.服务器CPU高峰时段由之前的7:0