我已将 jQuery 1.12.2 与 animate.css 一起使用,它成功填充了进度条。现在,我尝试仅在向下滚动到进度条后加载进度条,因为当前立即加载。当它已经加载且位于页面底部的某个位置时,拥有这个很棒的功能有什么意义?
我创建了一个 JSFiddle here 。我知道 JavaScript 有点困惑,可以用更简洁的方式编写,但请原谅我,因为我是 JS 新手,并试图首先完成这项工作。有人可以帮忙吗?
$('#myid').goalProgress({
goalAmount: 100,
currentAmount: 75,
textBefore: 'myid ',
textAfter: ''
});
});
goalProgress 是一个完全不同的类:
!function($){
$.fn.extend({
goalProgress: function(options) {
var defaults = {
goalAmount: 100,
currentAmount: 50,
speed: 1000,
textBefore: '',
textAfter: '',
milestoneNumber: 70,
milestoneClass: 'almost-full',
callback: function() {}
}
var options = $.extend(defaults, options);
return this.each(function(){
var obj = $(this);
// Collect and sanitize user input
var goalAmountParsed = parseInt(defaults.goalAmount);
var currentAmountParsed = parseInt(defaults.currentAmount);
// Calculate size of the progress bar
var percentage = (currentAmountParsed / goalAmountParsed) * 100;
var milestoneNumberClass = (percentage > defaults.milestoneNumber) ? ' ' + defaults.milestoneClass : ''
// Generate the HTML
var progressBar = '<div class="progressBar">' + defaults.textBefore + defaults.textAfter + '</div>';
var progressBarWrapped = '<div class="goalProgress' + milestoneNumberClass + '">' + progressBar + '</div>';
// Append to the target
obj.append(progressBarWrapped);
// Ready
var rendered = obj.find('div.progressBar');
// Remove Spaces
rendered.each(function() {
$(this).html($(this).text().replace(/\s/g, ' '));
});
// Animate!
rendered.animate({width: percentage +'%'}, defaults.speed, defaults.callback);
if(typeof callback == 'function') {
callback.call(this)
}
});
}
});
}(window.jQuery);
最佳答案
而不是运行这个
$('#myid').goalProgress({
goalAmount: 100,
currentAmount: 75,
textBefore: 'myid ',
textAfter: ''
});
});
在.ready
事件上
尝试在 scroll
事件上运行它。
例如,创建一个算法来检查此 #mydiv
是否在您的视口(viewport)中,然后触发此函数。
或者使用一些现成的插件。例如:http://scrollmagic.io/
关于javascript - 向下滚动到 Javascript 进度条后加载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944095/