2013-04-26 15 views
10

Sono curioso di sapere, è vero che è meglio assegnare un nome di classe al tag <img> nel file html invece di scriverlo direttamente nel file css?Assegnare un nome di classe al tag <img> invece di scriverlo nel file css?

<div class="column"> 
    <img class="custom-style" alt="" /> 
    <img class="custom-style" alt="" /> 
    <img class="custom-style" alt="" /> 
</div> 

invece di

.column img{/*styling for image here*/} 

ho bisogno di sapere v'è alcuna differenza tra di esse in termini di prestazioni web?

UPDATE:

Mi dispiace, supposely la questione è più <img> tag all'interno del .column div e tutte le immagini stanno utilizzando lo stesso stile.

+3

Domande come "è meglio ..." sono generalmente non costruttive, soprattutto quando non vengono forniti criteri specifici ("prestazioni web" è molto vaga). Inoltre, le due alternative hanno diverse gamme di utilizzo, quindi è come chiedere "è meglio viaggiare in auto o in aereo?" Come una domanda generale. –

risposta

13

La risposta breve è l'aggiunta di una classe direttamente all'elemento che si desidera creare, in effetti è il modo più efficace per definire come target questo elemento. MA, negli scenari del mondo reale è così trascurabile che non è affatto un problema di cui preoccuparsi.

Per citare Steve ouders (esperto CSS ottimizzazione) http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/:

Sulla base di test ho la seguente ipotesi: Per la maggior parte dei siti web, i possibili miglioramenti delle prestazioni da ottimizzare selettori CSS sarò piccola, e non valgono i costi.

La manutenibilità del codice è molto più importante negli scenari del mondo reale. Poiché l'argomento sottostante qui è il rendimento front-end; i booster reali prestazioni per il rendering delle pagine veloci si trovano in:

  • fare meno richieste HTTP
  • Utilizzare un CDN
  • Aggiungi un Expires
  • componenti Gzip
  • fogli di stile mettersi in cima
  • Inserisci script in fondo
  • Evita espressioni CSS
  • Marca JS e CSS esterno
  • Ridurre ricerche DNS
  • Minify JS
  • Evitare reindirizza
  • blocca gli script duplicati
  • Configura etags
  • Fai AJAX cacheable

Fonte: http://stevesouders.com/docs/web20expo-20090402.ppt

Così solo per confermare, la risposta è sì, e xample sotto è davvero più veloce, ma essere consapevoli del quadro più ampio:

<div class="column"> 
    <img class="custom-style" alt="appropriate alt text" /> 
</div> 
+0

ottima risposta, basta aggiungere "rimuovere un jpg" alla lista;) http://fourkitchens.com/blog/2013/04/24/one-less-jpg –

+0

Grazie mille! Questa è una grande risposta e buoni riferimenti a me come sviluppatore front-end. Come se sotto il div .column siano applicate più immagini con lo stesso stile applicato? –

1

Assegnare un nome di classe e applicare uno stile CSS sono due cose diverse.

Se vuoi dire <img class="someclass">, e

.someclass { 
    [cssrule] 
} 

, quindi non v'è alcuna reale differenza di prestazioni tra l'applicazione del css alla classe, o per .column img

0

sua dipendono. Se hai più di due immagini per applicare il css, è meglio aggiungere direttamente la classe all'immagine invece di fare .column img{/*styling for image here*/}

In termini di prestazioni, cosa che applico la classe all'immagine è meglio perché facendo quindi css non cercherà l'immagine del bambino possibile.

2

È più versatile se si assegna un nome di classe, poiché lo stile specificato si applica solo al nome di tale classe. Ma se si conosce esattamenteogni.column img e si desidera applicare lo stile allo stesso modo, non c'è motivo per cui non è possibile utilizzare tale selettore.

La differenza di prestazioni, se presente, è trascurabile in questi giorni.

0

Credo che la classe sul img tag è meglio quando si utilizza lo stesso stile in struttura diversa sul tuo sito. Devi decidere quando scrivi meno righe di codice CSS e HTML è più leggibile.

Problemi correlati