2013-06-25 5 views
26

Sto costruendo un sito che utilizza un plug-scrolling che anima fondamentalmente lo scorrimento. Sono abbastanza preoccupato per le prestazioni, come se inserissi alcune immagini nel sito, sembra piuttosto discontinuo quando si scorre/si anima.<img /> background-image (css) in termini di prestazioni vs

Il problema principale che posso rilevare con le immagini è il problema di reflow/repaint, quando l'immagine non ha le dimensioni corrette e quindi viene ridimensionata (devo occuparmene, so dello best practice).

Con questa affermazione in mente (le immagini saranno ridimensionate). Cosa dovrebbe essere meglio, elemento immagine o div con quelle immagini come sfondi per le prestazioni?

ho fatto questo jsFiddles che nel mio strumento di memoria del browser Chrome, mostrano che l'opzione immagine back-ground usa meno memoria.

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

<img src="..." /> 

background-image: http://jsfiddle.net/ek6Xn/1/

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

Riferimenti:

  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

Inoltre, i motori di ricerca e sistemi di incorporamento di social media non amano le immagini di sfondo css. –

+0

Potresti spiegare perché? – Alvaro

+0

Semplicemente non cache di loro o, nel caso di Facebook incorporamento, non è considerato come immagine pollice, mentre la condivisione. –

risposta

19

Personalmente vorrei dimenticare le prestazioni in questo caso e concentrarsi su ciò che l'immagine è:

1) Immagine = contenuti

2) Sfondo Im età = disegno

Il modo tendo a pensare a questo è, voglio l'immagine a comparire su tutte le dimensioni dello schermo, su tutti i dispositivi, con i CSS è acceso o spento? Voglio che l'immagine sia "indicizzata" da Google e Facebook. Se la risposta è sì a tutte oa una di queste domande, di solito l'immagine è "contenuto" e dovresti usare un tag IMG.

Se si desidera visualizzare un'immagine diversa con schermi di dimensioni diverse (o nessuna immagine su determinati dispositivi), o se si è felici che l'immagine non appaia su una stampa, o se si è soddisfatti per l'immagine non appare se il CSS è disattivato, quindi di solito l'immagine è "design" e dovresti usare un'immagine di sfondo.

+3

Sommario impressionante e succinto della situazione. Molto utile per chiarire quando usare quale. – VisWebsoft

+26

scusate, ma difficilmente gradevole. la domanda è focalizzata sulle prestazioni, e la 1) 2) risposta è completamente indipendente in questo ambito. 2nd - css spento? veramente? nel 2015, nella ricca web app, consideriamo davvero questa opzione? scusa, ma questo sembra del tutto irrilevante alla domanda. –

+0

La risposta è stata pubblicata nel 2013 ma la stessa cosa si applica ora - il CSS è per il design/layout non per i contenuti. Vai avanti e pubblica i contenuti utilizzando CSS in base al fatto che nessuno lo disattiverà - che non lo rende la cosa giusta da fare – MrCarrot