前端優化-Img與background

當img 遇到 background,這個世界就是這麼小~~~~~css

 

1 從解析機制看html

    Img屬於html標籤,background是css方法。一個頁面由html、css、js組成,按照瀏覽器解析機制,html標籤優先解析。你們都知道css文件會放在head加載,可是這並不意味着它會當即執行,而是在html加載完後才執行的。因此重要的元素,如logo就應該使用img,我也犯了這個錯誤啊,改~~~。前端

    若是僅僅是爲了顯示一張圖片,好比banner、廣告圖等,建議採用background方式。由於不重要的自動日後排,避免佔用帶寬,形成數據阻塞。算法

    若是圖片不少,這裏又出現一個新的問題,不一樣的瀏覽器支持的併發加載數量是不同的,(最新測試)IE是10個,FF是10個,圖片多,就會出現嚴重的延遲或者404,由於圖片加載慢會影響到頁面主要數據呈現,那麼讓用戶看到的都是空白,你好意思讓他繼續等下去嗎!bootstrap

    Img標籤優勢是自閉和,能夠避免空標籤出現(空標籤也是w3c驗證的內容之一)。採用background方式就會出現空標籤,bootstrap中的icon都是用i標籤加入的,而i標籤中是空內容,這樣就產生了空標籤(並非說這樣作很差,利弊等會聊)。瀏覽器

 

2 從SEO角度看服務器

    剛纔說了,Img標籤是自閉和的,不能添加文本內容,可是,Img有一個alt屬性,並且這個屬性在w3c標準中,要求必須有,這樣作的好處仍是不少的。併發

第一,圖片比較大,或者用戶網速比較窩火的時候,加載失敗了,至少還有文字提示告訴用戶這裏是個什麼內容的圖片。若是用戶非要看這個圖,那就多刷幾回去加載。另外,alt屬性有利於輔助閱讀,尤爲是對盲人朋友,他們使用閱讀器瀏覽頁面,若是沒有文本提示,就太不厚道了。模塊化

第二,alt屬性有利於SEO,搜索引擎實現很好的圖像識別仍是有一段路要走。測試

第三,說說缺點,Img加載的圖片是經過src拿到的,若是HTML代碼不容許修改,那怎麼換圖,只有同名文件替換,可是有可能遇到304狀態,須要服務器端作相應的設置。這時background的優勢就出來了,換皮膚就是這個栗子。Img的另外一個缺點是,顯示區域空間大小的預留,圖片必須和預留的空間一致,不然圖片要麼被拉伸要麼被壓縮,都不是等比例操做,設計師看到就吐血了,一個像素的差別都能找出來,傷不起的。固然,這種問題就是前端和視覺設計師必須遵照必定的規範。柵格化飄過~~~~~~

作SEO是最方便的仍是background,圖片是放在背景上的,前景寫內容,兩不誤。若是不想讓內容顯示出來,就加text-indent, -99999你懂的。(之前有這種玩法,是搜索引擎算法單一的年代,關鍵字比重高排名就靠前)。

剛纔提了一下bootstrap的background方法,bootstrap的作法是用background設置icon,icon的使用太靈活了,因此必須模塊化,語義化先靠邊站,魚與熊掌不可兼得。其次icon的重要性真不高,放在最後加載還減小了帶寬佔用量,提升PV速度。img標籤語義很明確不能亂用,因此bootstrap採用無語義的i標籤來設置icon也挺好,但要注意無語義標籤是否向前兼容,要關注HTML5中的定義。

 

3 語義化角度

    Background和語義化不沾邊了,Img是HTML標籤,語義明確。


建議:重要的須要優先加載的圖片最好採用img不重要的圖片最好採用background

 

以上屬於我的拙見,歡迎指正。

相關文章
相關標籤/搜索