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