我正在尝试以带边框的圆圈的形式实现一个计时器,直到下一张幻灯片。似乎已经想好如何在逻辑上构建它了:制作一个svg圆圈并填充笔划,大致按照以下公式:(周长)/(距离下一张幻灯片的时间)。
我真的需要关于如何完成这项任务的建议。也就是说,他感兴趣的是:用 svg 的什么参数来实现圆圈的间隔填充,以及在哪个滑动滑块事件上应用所有这些动作,可能是在 afterchange 上?
我尝试这样做是试图将进度条导航为一行 https://codepen.io/st-iv/pen/KGKgmv?editors=1010
$(document).ready(function(){
var time = 2;
var $bar,
$slick,
isPause,
tick,
percentTime;
$slick = $('.slider');
$slick.slick({
draggable: true,
adaptiveHeight: false,
dots: true,
mobileFirst: true,
pauseOnDotsHover: true,
});
$bar = $('.slider-progress .progress');
$('.slider-wrapper').on({
mouseenter: function() {
isPause = true;
},
mouseleave: function() {
isPause = false;
}
})
function startProgressbar() {
resetProgressbar();
percentTime = 0;
isPause = false;
tick = setInterval(interval, 10);
}
function interval() {
if(isPause === false) {
percentTime += 1 / (time+0.1);
$bar.css({
width: percentTime+"%"
});
if(percentTime >= 100)
{
$slick.slick('slickNext');
startProgressbar();
}
}
}
function resetProgressbar() {
$bar.css({
width: 0+'%'
});
clearTimeout(tick);
}
startProgressbar();
});
// circle bar
//Рассчитываем длину окружности по формуле (с=2πr)
var circleLength = $('.progress-round__wrap circle').attr('r')*Math.PI*2;
// здесь нужно будет сопоставить длину окружности со временем до перелистывания на другой слайд
$('.progress-round__wrap circle').css('stroke-dasharray', circleLength*part+','+circleLength);
});
$(document).ready(function(){
var time = 2;
var $circlebar;
$circlebar = $('.progress-round__wrap circle');
function resetCirclebar() {
$circlebar.css({
width: 0+'%'
});
clearTimeout(tick);
}
})
也许尝试与此解决方案结合使用 https://codepen.io/st-iv/pen/jeOMVm?editors=1010
如果需要简单地与线同步填充圆圈(如第一个链接中所示),则将
interval()函数替换为以下代码就足够了:UPD
重写了部分代码。删除了一些东西,添加了一些东西。我希望我的插件具有必要的功能: