我有一些使用精靈的代碼,它被設計成看起來像一個水平導航欄。我的問題是:對於我的代碼如下所示,這種方法實際上是否導致最終用戶下載png圖像8次或只是一次。使用html和css的精靈
如果它真的是一次,有沒有更好的方法來做到這一點?
CSS代碼
#facebook, #twitter, #linkedin, #googleplus {
width: 64px;
height: 64px;
display: inline-block;
}
#facebook {
background: url("images/sprite.png") 0 0;
}
#twitter {
background: url("images/sprite.png") -64px 0;
}
#linkedin {
background: url("images/sprite.png") -128px 0;
}
#googleplus {
background: url("images/sprite.png") -192px 0;
}
#facebook:hover {
background: url("images/sprite.png") 0 -64px;
}
#twitter:hover {
background: url("images/sprite.png") -64px -64px;
}
#linkedin:hover {
background: url("images/sprite.png") -128px -64px;
}
#googleplus:hover {
background: url("images/sprite.png") -192px -64px;
}
HTML代碼:
<nav>
<a id="facebook" href="https://www.facebook.com"></a>
<a id="twitter" href="https://www.twitter.com"></a>
<a id="linkedin" href="https://www.linkedin.com"></a>
<a id="googleplus" href="https://plus.google.com"></a>
</nav>
感謝這使得代碼看起來更整潔。現在我已經提出了你的建議改變,當你說圖像會重新繪製時,我只是好奇,這是否意味着整個精靈圖像被繪製或加載4/8次,或繪製一次,其他位顯示區域只是隱藏的視野。 – smally
@smally那麼,每個渲染過程都是重繪權利,我的意思是。最重要的是,瀏覽器**不會**從服務器請求新的圖像。採取這種方式,當圖像發生變化時,瀏覽器已經請求前三個url(),當第四個被解析時,不會顯示新圖像。 –