一直搞不明白,隐藏的元素的背景图,在页面加载时,是否自动加载?
img隐藏时,图片会加载吗?
测试代码如下:
<!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时才加载。
- 没有匹配的样式中,包含的背景不会显示。