javascript - 向下滚动到 Javascript 进度条后加载它

标签 javascript jquery progress-bar jquery-events animate.css

我已将 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, '&nbsp;'));
            });

            // 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/

相关文章:

javascript - 使用 JavaScript 检测浏览器、浏览器版本和当前操作系统

javascript - 使用 jQuery 计算两个输入表单的值

javascript - knockout 绑定(bind)到单选框

jquery - 根据缩放背景图像定位和/或缩放 div

jquery - 有没有办法将 Jquery 所做的 HTML 元素类更改保存在生成​​的 EJS 文件中?

Javascript: if(arg1, arg2, arg3...) 语句

jquery - dojo amd load jquery undefined 不是一个函数

java - Android Java GUI freeze/w ProgressBar

flutter ,计算的 Double 不适用于循环进度条

jquery对齐进度条