随笔 - 317, 文章 - 0, 评论 - 453, 阅读 - 114万
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

测试img在不显示时是否加载?

Posted on   PHP-张工  阅读(2520)  评论(0编辑  收藏  举报

一直搞不明白,隐藏的元素的背景图,在页面加载时,是否自动加载?

img隐藏时,图片会加载吗?

测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>img load</title>
    <style>
    .divImg {background:url(cssImg1.jpg);}
    .divImg {background:url(cssImg2.jpg);}
    .divNullImg {background:url(cssNullImg.jpg);}
    .divImgNone {display:none;}
    .divImgNone {background:url(cssNoneImg1.jpg);}
    .divImgNone div {background:url(cssNoneImg2.jpg);}
    #divNone {background:url(cssNoneImg3.jpg);}
    .divHoverImg:hover {background:url(cssHoverImg1.jpg);}
    </style>
    </head>  
<body>
 
<img src="img.jpg" />
<img src="cssImg2.jpg" />
<img src="ImgNone.jpg" style="display:none;" />
 
<div id="divNone" style="display:none; background:url(divNoneBack1.jpg);">
<img src="divNoneImg1.jpg" />
<div style="background:url(divNoneBack2.jpg);"></div>
</div>
<input type="button" value="显示隐藏" onclick="document.getElementById('divNone').style.display = 'block';" />
 
<div class="divImg">
img
</div>
 
<div class="divImgNone">
<img src="divNoneImg2.jpg" />
img none
<div></div>
<div style="background:url(divNoneBack3.jpg);"></div>
</div>
 
<div class="divHoverImg">
test Hover
</div>
 
<script>
var img = new Image();
img.src = 'jsImg.jpg';
document.getElementById('divNone').style.backgroundImage = 'url(jsNoneImg.jpg)';
</script>
 
</body>
</html>

测试了chrome33 和 IE7 使用Fiddler 监控

测试结果如下:

结果很复杂,IE和chrome下hover样式的背景图,只有鼠标悬浮时才加载。chrome下隐藏的背景不加载,IE下隐藏的背景要加载。

结论chrome:
  • 隐藏的元素及其包含的背景图不会加载(样式隐藏元素的当前背景会加载)。
  • hover的背景图不会加载,当hover时才加载。
  • 隐藏的img或img在隐藏的元素内也会加载。
  • 没有匹配的样式中,包含的背景不会显示。
  • 使用JS给隐藏的元素设置背景图时,会加载背景图。
结论IE:
  • hover的背景图不会加载,当hover时才加载。
  • 没有匹配的样式中,包含的背景不会显示。 
点击右上角即可分享
微信分享提示