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
},);
console.log("hh");
//如果进度条走到尽头
if (progressLength <= 0) {
clearInterval(timer);
$(".over").fadeIn(100);
}
}, );
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);
animate默认时长所带来的问题及解决的更多相关文章
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 设置Session存活时长
方式一:修改所有的session默认时长,修改tomcat目录下的conf文件夹下的web.xml文件. <session-config> <session-timeout>希 ...
- Shell32.ShellClass服务器操作系统无法获取 音频文件时长问题
前言: 上传音频文件,自动写入此音频文件的时长,这里用 COM组件Microsoft Shell Controls And Automation来实现. 首先 1.引用:Microsoft Shell ...
- video.js不能控制本地视频或者音频播放时长
问题: 把视频放到本地,然后对视频进行测试,想要控制视频或者音频的播放时长,没办法做到,每次拉动进度条,都会使得本地视频重新播放 原因: 所有浏览器默认js无法访问本地地址,也就是说js不能对本地文件 ...
- timeout超时时长优化和hystrix dashboard可视化分布式系统
在生产环境中部署一个短路器,一开始需要将一些关键配置设置的大一些,比如timeout超时时长,线程池大小,或信号量容量 然后逐渐优化这些配置,直到在一个生产系统中运作良好 (1)一开始先不要设置tim ...
- TTL 机制排毒,线上k8s的Job已经通过API 增加了Job的TTL 时长,且成功响应,为什么系统还是清理了Job?
TTL 机制排毒,线上k8s的Job已经通过API 增加了Job的TTL 时长,且成功响应,为什么系统还是清理了Job? 面试官:"已完成 Job 的 TTL 机制了解嘛?简单说说TTL存在 ...
- js读写Cookie问题(Cookie存储时长、Cookie存储域)汇总
在采集网站用户行为数据/使用js对用户行为做交互时,经常会使用到Cookie,了解Js Cookie的读写,以及一些细节,非常重要. 什么是Cookie 所谓Cookie,只是一条极为短小的信息, ...
- js获取html5 audio 音频时长方法
<audio src="我的好兄弟.mp3" controls="controls" id="audio" style=" ...
- 大文件视频断点续传插件resumabel.js,优化上传速度,缩短最后一片等待时长。
在angular中使用resumable.js遇到的一个问题:大视频上传到99-100%时,此时正在上传最后一片,最后一片的xhr一直是pending状态.原因插件会检查第一片和最后一片的元数据,检测 ...
- windows server 2008 R2服务器无法通过ShellClass获取mp3音乐时长
我们先看一段代码,获取mp3播放时长: #region GetMediaDetailInfo 获取媒体文件属性信息 /// <summary> /// 获取媒体文件属性信息 /// < ...
随机推荐
- os模块详解
python编程时,经常和文件.目录打交道,这是就离不了os模块.os模块包含普遍的操作系统功能,与具体的平台无关.以下列举常用的命令 1. os.name——判断现在正在实用的平台,Windows ...
- virsh 连接虚拟机 (vnc 或 控制台)
第一种方式 1.如果虚拟机登录方式为VNC,在ubuntu机器上安装vncviewer 在虚拟机的配置xml中 <graphics type="vnc" autoport=& ...
- Elasticsearch 因拷贝多余的jar到lib库导致无法启动的问题
因为需要测试,无意中拷贝了一个netty-buffer-4.1.16.Final.jar包放到es的lib目录下,晚上回家启动es的时候发现启动不起来了.检查日志发现如下错误. 其中有一句关键语句 C ...
- Navigator导航器
import React, { Component } from 'react';import { Platform, StyleSheet, Text, View, Navigator, Touch ...
- 分享到QQ空间和新浪微博功能
分享到QQ空间 http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=http://campus.51job.com/cmbnt ...
- GTID 笔记
1.生成事务 root@(none)>use pxc01 Database changed root@pxc01>create table tbx(id int); Query OK, 0 ...
- java实现图片文字识别的两种方法
一.使用tesseract-ocr 1. https://github.com/tesseract-ocr/tesseract/wiki上下载安装包安装和简体中文训练文件 window64位安装 ...
- Delphi XE TStringBuilder
function T_SunnySky_SDK.JoinItems(AParamDic: TDictionary<string, string>): string; var sb : TS ...
- MonggoDB学习笔记
MongoDB MongoDB介绍:非关系型的文档数据库.MongoDB的数据模型是面向文档的,文档是一种类似于JSON的结构.简单理解MongoDB这个数据库中存的是各种各样的JSON.(BSON) ...
- spark第九篇:Spark操作ES
spark操作es需要elasticsearch-hadoop-xxx.jar,版本需同es版本.从5.0版本开始,支持spark2.0. 把elasticsearch-hadoop-xxx.jar放 ...