javascript – Circle Progress Bar JQuery插件循环问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Circle Progress Bar JQuery插件循环问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2502字,纯文字阅读大概需要4分钟。
内容图文
![javascript – Circle Progress Bar JQuery插件循环问题](/upload/InfoBanner/zyjiaocheng/773/6db02020a4f74e5d96ad2b79d258892d.jpg)
问题:
我正在为项目使用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,这会阻止任何后续动画调用再次为其设置动画(您看到的循环问题).
然后,我从单击处理事件中取出了animateElements函数定义.我做到了这一点,所以我可以在更全球范围内调用它.我现在在单击处理程序中调用animateElements来更改选项卡.不得不这样做因为它在页面加载时被触发所有元素offsetTop = 0因为它们开始隐藏.
最后,我向animate元素函数添加了一个init属性,该函数重置所有数据 – 当为true时动画为false.它仅在从标签点击调用时才会生效,而不是通过滚动事件调用.
继承人相关的代码更新:
…新的init参数(也必须为传入的滚动事件腾出空间)
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插件循环问题全部内容,希望文章能够帮你解决javascript – Circle Progress Bar JQuery插件循环问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。