Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按顺序加载图像,延迟,无脚本回退_Javascript_Jquery_Html - Fatal编程技术网

Javascript 按顺序加载图像,延迟,无脚本回退

Javascript 按顺序加载图像,延迟,无脚本回退,javascript,jquery,html,Javascript,Jquery,Html,我想知道是否有人有一个很好的干净的解决方案,从页面的顶部到底部加载图像,等待前一个图像加载,然后再转到下一个。如果用户使用javascript,则返回常规的标记 有相当多的延迟加载插件,但我想加载所有的图片尽可能快的顺序,他们出现在网站上 这样做的原因是每个图像都相当大,用户会以一种非常缓慢的方式从上到下查看它们。试试这个,首先添加这个css img{display:none;} jquery $("img").each(function(index, value){ $(t

我想知道是否有人有一个很好的干净的解决方案,从页面的顶部到底部加载图像,等待前一个图像加载,然后再转到下一个。如果用户使用javascript,则返回常规的
标记

有相当多的延迟加载插件,但我想加载所有的图片尽可能快的顺序,他们出现在网站上


这样做的原因是每个图像都相当大,用户会以一种非常缓慢的方式从上到下查看它们。

试试这个,首先添加这个css

   img{display:none;}
jquery

   $("img").each(function(index, value){
   $(this).delay(300*index).fadeIn();   


   });
对于回退,您可以这样做,首先添加这个jquery,它将仅在启用js的情况下运行

$(function(){$('body').addClass('jse');});
那么这个

  $("img").each(function(index, value){
   $(this).delay(300*index).fadeIn();   


   });
在css中,只有当jquery的字词和body具有class.jse时,才会应用这种方法

 .jse img {display:none;}

有趣的问题。我的方法是这样的

$(函数(){
var loadNext=函数(){
var next_guy=$('imgz img[x-src]')。first();
next_guy.prop('src',next_guy.attr('x-src');
next_guy.removeAttr('x-src');
};
$('imgz img')。on('load',loadNext);
});
#imgz img{
宽度:250px;
边框:1px点灰色;
明确:两者皆有;
显示:块;
}

以下是您的操作方法:

$(document).ready(function () {
    var $images = $("img");
    //First hide all images
    $images.hide();

    function lazyLoad(num) {
        $images.eq(num).fadeIn(function () {
            if (num != $images.length) {
                lazyLoad(++num);
            }
        });
    }
    //When first has loaded start fading in
    $images.eq(0).load(function () {
        lazyLoad(0);
    });
});

在这里查看:

您有什么问题?你有没有试过不起作用的东西。你的代码中有bug吗?你有一个到目前为止你已经尝试过的例子吗?我一直在使用延迟加载图像插件,直到现在,但它没有做我想做的,我找不到任何关于如何做我问的问题的东西。+1对于这个后备的东西。所以如果我隐藏了一个图像元素,图像没有加载?加载了,但它是隐藏的,你不能延迟加载(一个接一个地创建)或者一个接一个地显示它们?最好先加载它们,让它们隐藏起来,因为加载它们需要时间,并且应该用delays显示它们。如果js被禁用,这不会显示图像,正如问题所述。我已经给出了@ceath的回退,现在检查MateAdul的答案是否优雅,因为浏览器无论如何都会这样做(尝试按顺序加载图像),最终用户可以从预取中获益。不过,为了更明确地控制此流,我认为这是唯一的答案,它实际上会将每个图像的加载延迟到上一个图像完成之前(在上一个图像完成时更改元素中的src标记)。将使用您的代码的变体,谢谢。它没有提供您要求的优雅降级,但它让您达到了一半。在同一位置添加了图像标记,并显示:上面的图像标记中没有任何图像标记,我使用JS删除该图像标记。。)