請在主流瀏覽器中打開測試頁面,在fiddler里查看http請求.
1. 隱藏圖片
<img src="1.jpg" style="display: none" />測試:test_1.html
結(jié)論:只有opera不產(chǎn)生請求.
注意:用visibility: hidden隱藏圖片時,在opera下也會產(chǎn)生請求.
2. 重復(fù)圖片
<img src="1.jpg" /><img src="1.jpg" />測試:test_2.html
結(jié)論:所有瀏覽器都只產(chǎn)生一次請求 .
3. 重復(fù)背景
<style type="text/css"> .test1 { background: url(1.jpg) } .test2 { background: url(1.jpg) }</style><div class="test1">test1</div><div class="test2">test2</div>測試:test_3.html
結(jié)論:所有瀏覽器都只產(chǎn)生一次請求.
4. 不存在地元素地背景
<style type="text/css"> .test1 { background: url(1.jpg) } .test2 { background: url(2.jpg) } /* 頁面中沒有class為test2地元素 */</style><div class="test1">test1</div>測試:test_4.html
結(jié)論:背景僅在應(yīng)用地元素在頁面中存在時,才會產(chǎn)生請求.這對css框架來說,很有意義.
5. 隱藏元素地背景
<style type="text/css"> .test1 { background: url(1.jpg); display: none; } .test2 { background: url(2.jpg); visibility: hidden; }</style><div class="test1">test1</div>測試:test_5.html
結(jié)論:opera和firefox對于用display: none隱藏地元素背景,不會產(chǎn)生http請求.僅當(dāng)這些元素非display: none時,才會請求背景圖片.
6. 多重背景
<style type="text/css"> .test1 { background: url(1.jpg); } .test1 { background: url(2.jpg); }</style><div class="test1">test1</div>測試:test_6.html
結(jié)論:除了基于webkit渲染引擎地safari和chrome,其它瀏覽器只會請求一張背景圖.
注意:webkit引擎瀏覽器對背景圖都請求,是因為支持css3中地多背景圖.
7. hover地背景加載
<style type="text/css"> a.test1 { background: url(1.jpg); } a.test1:hover { background: url(2.jpg); }</style><a href="#" class="test1">test1</a>測試:test_7.html
結(jié)論:觸發(fā)hover時,才會請求hover狀態(tài)下地背景.這會造成閃爍,因此經(jīng)常放在同一張背景圖里通過翻轉(zhuǎn)來實現(xiàn).
注意:在圖片no-cache地情況下,ie每次hover狀態(tài)改變時,都會產(chǎn)生一次新請求.很糟糕.
2009-05-13晚補充:上面地解釋有誤,更詳細(xì)地解釋請參考續(xù)篇.翻轉(zhuǎn)技巧指地是sprite技術(shù),例子:test_7b.html, 在ie6下不會產(chǎn)生閃爍.
8. js里innerhtml中地圖片
<script type="text/javascript"> var el = document.createelement('div'); el.innerhtml = '<img src="1.jpg" />'; //document.body.appendchild(el);</script>測試:test_8.html
結(jié)論:只有opera不會馬上請求圖片.
注意:當(dāng)添加到dom樹上時,opera才會發(fā)送請求.
更多信息請查看IT技術(shù)專欄