如果通过将显示属性设置为none
来隐藏图像,浏览器是否仍然通过HTTP请求加载该图像文件?因为我有一个图像列表,它们的显示属性设置为none
,除了第一个图像是默认图片。一旦用户单击下一个按钮,我想显示图像2并将其他图像的显示属性设置为none
。我要求这样可以让我的网站更快。
答案 0 :(得分:13)
是的,图片已加载。其中一个解决方案是使用src
:
<img data-src="http://placekitten.com/300/300?" />
<img data-src="http://placekitten.com/400/400?" />
<img data-src="http://placekitten.com/500/500?" />
然后,当您想要显示其中一个时,只需设置src
它的属性data-src
:
// showing the second one
var $img = $('img').eq(1);
$img.attr('src', $img.attr('data-src'));
然后它被加载。
另一个解决方案是使用background-image
代替img
代码,在这种情况下,它将不会加载,直到它变为可见:
<div class="div-as-image" style="background-image: url(http://placekitten.com/300/300?);"></div>
<div class="div-as-image" style="background-image: url(http://placekitten.com/400/400?);"></div>
<div class="div-as-image" style="background-image: url(http://placekitten.com/500/500?);"></div>
在你的CSS中:
.div-as-image {
width: 500px;
height: 100px;
display: none;
}
现在,如果你让其中一个可见,它的图像就会加载:
// showing the second one
var $div = $('.div-as-image').eq(1);
$div.css('display', 'block');
background-image
元素上加载none
。答案 1 :(得分:7)
是。图像被加载,由于CSS规则,它只是不可见。
答案 2 :(得分:2)
它有点晚了,但我建议Lazy Load Plugin for jQuery使用Mika Tuupola(至少那是我要做的事情)。
在将图像显示在窗口中并且等待它们具有使图像可见的显示值之前,它不能加载图像。更不用说,它非常易于使用。
一帆风顺。
答案 3 :(得分:-1)
您似乎可以设置background: none;
以阻止background-image
加载。见jsfiddle:http://jsfiddle.net/Grsmto/7d15fuhm/4/
在Chrome 39上测试过。对于Firefox 34,display: none;
就足够了。
编辑:示例已更新
答案 4 :(得分:-2)
您可以使用ajax从文件夹加载图像,然后使用img元素的jQuery.load()函数。