gpt4 book ai didi

javascript - Circle Progress Bar JQuery插件循环问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:29:44 26 4
gpt4 key购买 nike

问题:我正在为一个项目使用 Circle Progress JQuery 插件(版本:0.6.0)并对其进行了一些修改,但是,每个圆圈似乎会在很长一段时间内重复(或循环),而不仅仅是执行动画一次。

由于所做的修改,例如添加链接到点击时动画开始的位置,似乎不是问题所在。当你开始向下滚动时,当你这样做时 - 每个圆圈都会根据设置的百分比开始动画,但在停止之前会不断重复多次。它应该只在用户向下滚动时为每个圆圈启动一次动画,但我似乎无法弄清楚发生这种情况的根源。

这是我的:

$('.about_nav a:nth-of-type(2)').click(function () {
function animateElements() {
$('.progressbar').each(function () {
var elementPos = $(this).offset().top;
var topOfWindow = $(window).scrollTop();
var percent = $(this).find('.circle').attr('data-percent');
var percentage = parseInt(percent, 10) / parseInt(100, 10);
var animate = $(this).data('animate');
if (elementPos < topOfWindow + $(window).height() - 30 && !animate) {
$(this).data('animate', false); // Change this 'false -or- true' - Currently set to false so that each time a user clicks on 'Skill-set' link, animation occurs
$(this).find('.circle').circleProgress({
startAngle: -Math.PI / 2,
value: percent / 100,
thickness: 2, // Change this for thickness
fill: {
color: '#16A085'
}
}).on('circle-animation-progress', function (event, progress, stepValue) {
$(this).find('.percent').text((stepValue*100).toFixed(0) + "%"); // NOTE: Change '.toFixed(0)' to '.toFixed(1)' to get 1 decimal place to the right...
}).stop();
}
});
}

animateElements();
$('.about_body_wrapper').scroll(animateElements);
});

这是我的意思的粗略演示:DEMO - 单击“技能集”选项卡并向下滚动。

如有任何帮助,我们将不胜感激!

最佳答案

所以我想我已经在 This updated(again) JSFIDDLE 上实现了您想要的

基本上,我在动画开始之前将 data-animate 属性设置为 true,这会阻止任何后续的 animate 调用再次激活它(您看到的循环问题)。

然后,我从点击处理事件中取出了 animateElements 函数定义。我这样做是为了在更全局化的范围内调用它。我现在在更改选项卡的点击处理程序中调用 animateElements。必须这样做是因为它在页面加载时被触发使所有元素 offsetTop = 0 因为它们开始时是隐藏的。

最后,我向动画元素函数添加了一个 init 属性,它在 true 时将所有 data-animate 重置为 false。仅当通过选项卡单击而不是滚动事件调用时才为真。

这里是相关的代码更新:

...新的初始化参数(还必须为传入的滚动事件腾出空间)

function animateElements(e, init) {
if(init){
$('.progressbar').data('animate', false);
}

...animateElements 现在最初由选项卡单击处理程序调用

    $(currentlist).fadeOut(250, function () {
$(newlist).fadeIn(200, function(){
animateElements({}, true);
});
});

最后,请注意现在有一堆东西现在你可以删掉了,因为我在证明这个概念时忘记在 jsfiddle 中了。

干杯!

关于javascript - Circle Progress Bar JQuery插件循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com