我在this site上看到了这个进度条形码。
我想做的是,倒计时3分钟,并显示剩下多少分钟和秒。所以,而不是显示百分比,我想显示剩余时间。
我使用以下代码:
JS
progress(100, $('#progressBar')); // This is what the timer should update each second
function progress(percent, $element) {
var progressBarWidth = percent * $element.width() / 100;
$element.find('div').animate({ width: progressBarWidth }, 500).html(percent + " minutes/seconds to go");
};
HTML
<div id="progressBar">
<div></div>
</div>
CSS
#progressBar {
width: 923px;
margin: 10px auto;
height: 22px;
background-color: #0A5F44;
}
#progressBar div {
height: 100%;
text-align: right;
padding: 0 10px;
line-height: 22px; /* same as #progressBar height if we want text middle aligned */
width: 0;
background-color: #CBEA00;
}
答案 0 :(得分:17)
您需要更改此功能:
timeleft
,timetotal
,element
)代替2个实际setTimeout()
刷新进度条timeleft
以了解您是否需要来刷新进度条function progress(timeleft, timetotal, $element) {
var progressBarWidth = timeleft * $element.width() / timetotal;
$element
.find('div')
.animate({ width: progressBarWidth }, 500)
.html(timeleft + " seconds to go");
if(timeleft > 0) {
setTimeout(function() {
progress(timeleft - 1, timetotal, $element);
}, 1000);
}
};
progress(180, 180, $('#progressBar'));
另外,您应该添加此CSS,以避免进度条溢出其容器:
#progressBar div {
box-sizing: border-box;
}
<强> [提示] 强>
如果您希望进度条平稳且不断减少,请改用此代码:
.animate({ width: progressBarWidth }, timeleft == timetotal ? 0 : 1000, "linear")