圆形进度条倒计时是一种常见的用户界面元素,用于显示剩余时间或进度。它通常以圆形的形式展示,随着时间的推移,进度条会逐渐填充或减少。
以下是一个基于jQuery的圆形进度条倒计时的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>圆形进度条倒计时</title>
<style>
#circle {
width: 100px;
height: 100px;
border-radius: 50%;
background: conic-gradient(#4CAF50 25%, #e0e0e0 0);
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
color: #333;
}
</style>
</head>
<body>
<div id="circle">10s</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
let timeLeft = 10; // 初始时间(秒)
const circle = $('#circle');
function updateCircle() {
const degrees = (timeLeft / 10) * 360;
circle.css('background', `conic-gradient(#4CAF50 ${degrees}deg, #e0e0e0 0)`);
circle.text(timeLeft + 's');
if (timeLeft > 0) {
timeLeft--;
setTimeout(updateCircle, 1000);
} else {
circle.text('Time is up!');
}
}
updateCircle();
});
</script>
</body>
</html>
问题:进度条更新不及时或不准确。
原因:
setTimeout
或setInterval
的精度可能受到浏览器性能和其他脚本的影响。解决方法:
requestAnimationFrame
:对于动画效果,使用requestAnimationFrame
可以提高更新的准确性。function updateCircle() {
const degrees = (timeLeft / 10) * 360;
circle.css('background', `conic-gradient(#4CAF50 ${degrees}deg, #e0e0e0 0)`);
circle.text(timeLeft + 's');
if (timeLeft > 0) {
timeLeft--;
requestAnimationFrame(updateCircle);
} else {
circle.text('Time is up!');
}
}
通过以上方法,可以有效解决进度条更新不及时或不准确的问题。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云