您可以使用画布在现代浏览器上实现它。我看了看
https://developer.mozilla.org/en/Canvas_tutorial/Drawing_shapes
在“弧”部分下,我找到了这个解决方案(下面链接了一个小提琴)
HTML5
<!DOCTYPE HTML>
<html>
<head>
<title>Canvas circular timer</title>
</head>
<body>
<div>
<canvas id="timer" width="100" height="100"></canvas>
<span id="counter">20</span>
</div>
</body>
</html>
CSS
canvas {
-webkit-transform : rotate(-90deg);
-moz-transform : rotate(-90deg);
}
div { position: relative; z-index: 1; height: 100px; width: 100px; }
div span {
position : absolute;
z-index : 1;
top : 50%;
margin-top : -0.6em;
display : block;
width : 100%;
text-align : center;
height : 1.5em;
color : #0e0;
font : 1.5em Arial;
}
Javascript
window.onload = function() {
var canvas = document.getElementById('timer'),
seconds = document.getElementById('counter'),
ctx = canvas.getContext('2d'),
sec = seconds.innerHTML | 0,
countdown = sec;
ctx.lineWidth = 6;
ctx.strokeStyle = "#00EE00";
var
startAngle = 0,
time = 0,
intv = setInterval(function(){
var endAngle = (Math.PI * time * 2 / sec);
ctx.arc(50, 50, 35, startAngle , endAngle, false);
startAngle = endAngle;
ctx.stroke();
seconds.innerHTML = countdown--;
if (++time > sec) { clearInterval(intv); }
}, 1000);
}
你可以看到一个 jsFiddle 例子:http://jsfiddle.net/2qyEv/(用 Mozilla 和 webkit 试过)
请注意,剩余的秒数不是写在画布内,而是在位于画布上方的<span> 元素内。这样做 - 实现一个后备逻辑 - 不支持画布元素的旧浏览器至少可以显示倒计时。如果你不需要这种优化,这个小提琴只使用一个画布来显示文本和图形:http://jsfiddle.net/9L48R/
我留给你用 jQuery 构造替换 javascript 语句。