使用较短的间隔时,为什么更改CSS宽度会产生奇怪的效果?

丹莫伦

这个想法是要有一个进度条,它会在20秒内从0%加载到100%,然后从0开始重新加载。要实现这一点,我需要setInterval结合使用jQuery.css('width', '+=0.1%)

一个时间间隔为20秒,另一个时间间隔为每20毫秒将div宽度增加0.1%。第一次启动时应该达到100%,对吗?

但事实并非如此。首先,宽度未按预期添加:不是以0.1%的步长计算蜂鸣次数,而是在逗号后面放置更多位置。其次,这20秒在达到100%之前已经很长时间了。不同的浏览器在这里给出不同的结果。在重新开始之前,Chrome接近100%,而在我的网站中达到70%时,Firefox已经过了20秒...

即使使用1%的步长而不是0.1%的步长,它仍然不能正确地累加,尽管应该没有任何地方,但我仍然在逗号后面找到位置。

示例代码:

var interval;
$('.progressbar').css('width', '0%');
interval= setInterval(function() {
  $('.progressbar').css('width', '+=0.1%');
}, 20);

setInterval(startLoading, 20000);

function startLoading() {
  clearInterval(interval);
  $('.progressbar').css('width', '0%');
  interval= setInterval(function() {
    $('.progressbar').css('width', '+=0.1%');
  }, 20);
}
.progressbar{
    height: 10px;
    background: #0060ff;
    border-radius:20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div class="progressbar"></div>

亚历克西斯·范德皮特(Alexis Vandepitte)

使用CSS动画或jquery .animate()

您只需要将持续时间设置20000,一切都会正常运行。如果您必须在某个时候停止它,只需progressBarLoop在动画回调中函数周围添加一个条件(我将持续时间设置为5000,因此我们不必等待20秒即可重新启动)

var stop = false;

function progressBarLoop() {
  $('.progressbar').css('width', '0%');
  $('.progressbar').animate({
    width:'100%'
  }, 5000, 'linear', function() {
    if(!stop) {
      progressBarLoop();
    }
  });
  
}

 progressBarLoop();
.progressbar{
    height: 10px;
    background: #0060ff;
    border-radius:20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div class="progressbar"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在使用Time.timeScale产生减速效果时,会将分辨率更改为全屏?

使用css3动画更改背景图像时为什么会有褪色效果?

为什么使用引号时“ wsl”会产生不同的结果?

为什么 VSM Depth Map Blurring 会产生奇怪的结果?

为什么嵌套嵌套循环会产生奇怪的结果?

为什么这些内联块元素会产生额外的宽度?

为什么grid-gap会更改CSS Grid中列的宽度?

为什么在使用ssh时,ConEmu会更改背景颜色?

为什么使用Webcam和Tensorflow.js会产生奇怪的三重视频复制?

为什么在 setTimeout 中更改状态会产生无限循环

为什么使用IP代替域名时,功能“主机”会产生不同的结果?

当我向日期时间添加间隔时,PHP似乎会更改其他日期时间变量。为什么?

为什么在 Elapsed 函数中更改间隔时 C# 计时器会重新启动

为什么更改元素的宽度会影响其同级?

为什么表格列标题会更改其宽度&

为什么在使用clang时std :: boolalpha会忽略字段宽度?

为什么在0.0 / 0.0时,GCC会产生-nan,而clang和intel会产生+ nan?

当这行GLSL计算出预期的效果时,为什么这行计算距离会产生不一致的结果?

CSS转换为什么会影响站点宽度?

为什么在使用CopyOnWriteArrayList时结果奇怪?

为什么在 WinForm 的 TextBox 中组合调用 AppendLine 和 Length of StringBuilder 会产生奇怪的结果?

为什么在最里面的for循环中添加花括号会产生如此奇怪的结果?

为什么构造函数调用构造函数会产生奇怪的结果?

为什么在某些情况下JavaScript中按零移位会产生奇怪的结果

弹性布局会产生奇怪的空格-但不会在边缘-为什么?

为什么使用super会产生此结果

为什么使用getClientRects()的相同代码会产生不同的结果?

为什么在我的代码中使用宏会产生错误?

为什么使用str.format会产生unicode错误?