在一定百分比上禁用引导进度条的平滑动画过渡
Disable smooth animation transition of Bootstrap Progress Bar on certain percent
我正在使用引导进度栏(PB)来显示进程进度。我的进程是一个 AJAX 进程。理想情况下,后台任务应不时向进度条报告后台进程的百分比状态,以显示实时进度指示("已完成 100 个任务中的 1 个"......"已完成 100 个任务中的 99 个"),后台任务仅限于发送一个状态报告。这是在 AJAX 调用结束时。
所以我决定做一个循环PB。因此,如果它达到 100%,它将再次循环到 0%,直到 AJAX 任务完成并结束循环。Bootstrap 的问题在于动画介于 100% 到 0% 之间。
在我的 jfiddle 中,当 PB 达到 100% 时,它应该立即为 0%。但它不会立即闪烁到 0%,而是使该过程动画化。因此,只有第一个循环转到 0% 到 100%,后续循环转到 25% 到 100%,再也不会转到 0%。
我虽然动画是因为PB的.active
类。所以我试图在 100% 到 1% 之间删除它:
var increment = function(value) {
if(x > 100) {
x = 0;
progressBar.parent().removeClass("active");
}
else if(x == 1) {
progressBar.parent().addClass("active");
}
progressBar
.attr('aria-valuenow', value % 100)
.css('width', (value % 100) + '%')
.text("");
};
虽然它仍然不起作用。如何仅在此特定 PB 上禁用该转换?我可以将超时设置为 1 秒,这个问题会消失,尽管我认为有比这更好的答案。
>如果将transition:none;
添加到栏中。然后它只会像计时器函数一样快地制作动画。
var progressBar = $("div.progress-bar");
var x = 0;
var increment = function() {
x = (x > 100) ? 0 : x + 1;
progressBar.css('width', (x % 100) + '%');
};
window.setInterval(increment, 50);
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<div class="row">
<div class="col-sm-12">
<div class="progress progress-striped active">
<div class="progress-bar" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%;transition:none;">
</div>
</div>
</div>
</div>
您还可以添加与动画速率相同的transition-duration:50ms
,它将平滑动画。
var progressBar = $("div.progress-bar");
var x = 0;
var increment = function() {
x = (x > 100) ? 0 : x + 1;
progressBar.css('width', (x % 100) + '%');
};
window.setInterval(increment, 50);
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<div class="row">
<div class="col-sm-12">
<div class="progress progress-striped active">
<div class="progress-bar" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%;transition-duration:50ms;">
</div>
</div>
</div>
</div>
相关文章:
- 如何正确编程jQuery动画与平滑(导航栏)
- 如何平滑地设置twitter引导程序进度条的动画
- jQuery-slideToggle动画不平滑
- 图像动画不平滑
- 在一定百分比上禁用引导进度条的平滑动画过渡
- jQuery:滚动时平滑动画字体大小变化
- jQuery设置的边距顶部使内容跳跃.如何使其平滑动画化
- 如何通过requestAnimationFrame平滑动画
- 请帮助使用加速度计 JavaScript 读取平滑动画
- 基于滑块值的平滑动画
- 如何创建朝向目标的平滑动画
- 饼图标签的平滑动画
- 如何滚动到一个锚点与平滑动画土坯边缘
- 平滑动画背景颜色不透明度后,基础图像加载
- 平滑动画在kinetic.js (html5 canvas)
- javascript平滑动画从X,Y到X1,Y1
- CSS和jQuery模拟时钟-平滑动画
- HTML部分的平滑动画
- 列表视图内部可折叠面板的平滑动画
- 平滑动画在HTML5画布