javascript - 在显示 div 之前加载图像

标签 javascript jquery html css

我以前从未在这个论坛上问过任何问题,所以我会尽量说清楚。 当 div 的内容加载到我的网站时,我试图显示一个加载屏幕。

我尝试使用 jQuery .load() 函数,但它似乎不起作用。 它在我使用 .ready() 函数时有效,但我想在显示 div 之前加载所有图像。

所以 div 是隐藏的 (style="display:none;")

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="loading"> // loading screen </div>
<div id="divtoshow" style="display:none;"> //images and text </div>

<script>
$("#divtoshow").load(function(){
  $("#loading").fadeOut(200);
  $("#divtoshow").fadeIn(200);
});
//if i replace load with ready it works
</script>

最佳答案

当页面上的所有图像都已加载时,您想做一些特别的事情。试试这个自定义 jQuery 事件...

/**
 * Exposes an event called "imagesLoaded" which is triggered 
 * when all images on the page have fully loaded.
 */
(function($) {
    var loadImages = new Promise(function(done) {
        var loading = $("img").length;
        $("img").each(function() {
            $("<img/>")
                .on('load', function() {
                    loading--;
                    if (!loading) done();
                })
                .on('error', function() {
                    loading--;
                    if (!loading) done();
                })
                .attr("src", $(this).attr("src"))
        });
    });
    loadImages.then(function() {
        $(document).trigger({
            type: "imagesLoaded"
        });
    });
})(jQuery);

它的工作原理是复制每个图像(如果它们已经加载,这是捕获加载事件所必需的)并监听副本上的加载。我的想法来自 here .

Here is a fiddle.

关于javascript - 在显示 div 之前加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511493/

相关文章:

JavaScript - 以及创建和使用 Java 对象

javascript - 如何将我的 csrf token 添加到我的 $.destroy - 在 Rails 3 和 Javascript 中

javascript - 如何将拖放结果存储为图像

javascript - JS如何初始化复杂的数组?

javascript - 如何使用正确的缩进在 html 中打印复杂的嵌套 JSON 对象?

html - Bootstrap 网格堆叠列未填满整个宽度

html - 在图像底部显示图像标题

javascript - 在 Firefox 中使用 videojs 播放 flash mp4 - 音频播放但视频为空白

jQuery 按数据顺序淡入淡出

html - 响应图像 : Srcset & sizes