2013-06-25 39 views
26

我建立一個使用滾動插件,基本上動畫滾動網站。 我非常關心性能,就好像我在網站中插入一些圖像一樣,在滾動/動畫時看起來很不連貫。<img /> VS性能背景圖片(CSS)

我可以檢測圖像的主要問題是迴流/重繪問題,當圖像沒有正確的尺寸,因此縮放(我必須處理這個,我知道best practice)。

有了這個聲明(圖片將被縮小)。什麼應該更好,圖像元素或divs與這些圖像作爲背景作爲性能?

我做了這個jsFiddles,在我的chrome瀏覽器的內存工具,表明回地面圖像選項使用較少的內存。

<img />http://jsfiddle.net/ek6Xn/

<img src="..." /> 

background-imagehttp://jsfiddle.net/ek6Xn/1/

<div></div> 
div { 
    background:url(...); 
    background-size:100% 100%; 
} 

參考文獻:

  1. Difference in performance between img tag elements vs divs with background images?
  2. When to use IMG vs. CSS background-image?
  3. http://www.html5rocks.com/en/tutorials/speed/unnecessary-paints/
  4. http://updates.html5rocks.com/2013/02/Profiling-Long-Paint-Times-with-DevTools-Continuous-Painting-Mode
+0

此外,搜索引擎和社交媒體嵌入系統不喜歡css背景圖像。 –

+0

你能解釋一下爲什麼嗎? – Alvaro

+0

他們只是不會緩存它們,或者,在Facebook嵌入的情況下,它不被視爲分享時的拇指圖像。的 –

回答

19

個人而言,我會忘記性能在這種情況下,注重形象是什麼:

1)圖像=內容

2)Background Im年齡=設計

我傾向於認爲這個是這樣的,我想要的形象出現在所有屏幕尺寸上的所有設備,CSS開啓或開或關?我是否希望圖像由Google和Facebook「索引」?如果對所有或任何這些問題的答案是肯定的,那麼通常圖像是「內容」,您應該使用IMG標籤。

如果你想有一個不同的圖像在不同的屏幕尺寸(或無圖像上的某些設備在所有)顯示,或者如果你是快樂的圖像不會出現在打印出來,或者你開心如果CSS關閉,圖像不顯示,那麼通常圖像是「設計」,你應該使用背景圖像。

+3

真棒,簡潔的情況總結。清理何時使用哪一個非常有幫助。 – VisWebsoft

+26

對不起,但很難接受。問題集中在績效上,而1)2)的迴應在這個範圍內完全不相關。 2nd - css關閉了嗎?真?在2015年,在富Web應用程序中,我們真的考慮這個選項? 對不起,但這似乎完全不相關的問題。 –

+0

答案已於2013年發佈,但現在同樣適用 - CSS僅用於設計/佈局而非內容。在沒有人會關閉它的情況下使用CSS來提供內容 - 這並不是正確的做法 – MrCarrot