目前,我正在开展一个问答游戏,其中,对于每个问题,我希望放置一个倒数计时器。我有一些插件,但我希望自己可以创建它。我想要创建的内容看起来像下图中的那个。你能告诉我我该怎么做吗?
有没有办法将边框分配到最多只有指定百分比的边界,这样我就可以先给出一个边框,然后在每一个进展时,我可以继续减少/增加它以便我会以完美的方式得到它。
我希望创建的计时器应该看起来像这样(希望你了解它的蓝色边框每秒会增加):
答案 0 :(得分:53)
这是我刚才玩的东西。它使用SVG,css过渡和javascript的组合。你应该能够把它拆开并用作起点......
/**
* The setTimeout({},0) is a workaround for what appears to be a bug in StackSnippets.
* It should not be required. See JSFiddle version.
*/
setTimeout(function() {
var time = 10; /* how long the timer will run (seconds) */
var initialOffset = '440';
var i = 1
/* Need initial run as interval hasn't yet occured... */
$('.circle_animation').css('stroke-dashoffset', initialOffset-(1*(initialOffset/time)));
var interval = setInterval(function() {
$('h2').text(i);
if (i == time) {
clearInterval(interval);
return;
}
$('.circle_animation').css('stroke-dashoffset', initialOffset-((i+1)*(initialOffset/time)));
i++;
}, 1000);
}, 0)

.item {
position: relative;
float: left;
}
.item h2 {
text-align:center;
position: absolute;
line-height: 125px;
width: 100%;
}
svg {
-webkit-transform: rotate(-90deg);
transform: rotate(-90deg);
}
.circle_animation {
stroke-dasharray: 440; /* this value is the pixel circumference of the circle */
stroke-dashoffset: 440;
transition: all 1s linear;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="item html">
<h2>0</h2>
<svg width="160" height="160" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Layer 1</title>
<circle id="circle" class="circle_animation" r="69.85699" cy="81" cx="81" stroke-width="8" stroke="#6fdb6f" fill="none"/>
</g>
</svg>
</div>
&#13;
<强> JSFiddle version 强>
答案 1 :(得分:0)
你应该看看jquery插件旋钮https://github.com/aterrien/jQuery-Knob,生成画布循环输入,并设置定时器行为,如:
var time = 0,
maxTime = 60;
$('#dial').knob({
readOnly : true,
thickness : 0.1,
max : maxTime
});
setInterval(function() {
if(time>maxTime) time = 0;
time++;
$('#dial')
.val(time)
.trigger('change');
}, 1000);
我在这里制作了一个代码:http://codepen.io/pik_at/pen/azeYRg