有以下代码:
$('input[type="button"]').on('click', function(){
StartFill();
});
function StartFill() {
let timer = 1000*5;
$('.status').css('background', 'green');
$('#fill path')
.css('stroke-dasharray', '0, 251.2')
.animate({
'stroke-dasharray': '251.2, 251.2'
}, timer, 'linear', function(){
$('#fill path').css('stroke-dasharray', '0, 251.2');
$('.status').css('background', 'red');
});
}
#fill {
width: 150px;
height: 150px;
}
.status {
display: block;
width: 20px;
height: 20px;
background: red;
position: absolute;
left: 0;
top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- -->
<svg id="fill" viewbox="0 0 100 100">
<path fill="none" stroke-linecap="round" stroke-width="5" stroke="#07f" d="M50 10 a 40 40 0 0 1 0 80 a 40 40 0 0 1 0 -80">
</path>
</svg>
<div class="status"></div>
<br>
<input type="button" value="start">
按照计划,当您单击按钮时,"start"
圆圈的边框应该被填充(就像一个圆形进度条)。
但他不想..
我认为问题在于它.animate()
没有以同样的方式“复制”“机制” stroke-dasharray
。
你怎么能“重播”这个动作?
附言
<animate>
仅在您可以“知道”动画何时结束时才建议。
<div class="status">
只是为了直观地表明该操作.animate()
正在起作用。
您可以逐步更新属性
animate
独家所有动画选项stroke-dasharray
为了更好地了解它的工作原理,您可以阅读我们网站上的主题。
1. 一段
左键“L”填充圆圈
右“R” - 填充减少
2.从一个共同点同步
3. 两段
4.三段