2013-03-13 10 views
7

Quale opzione è migliore:Nascondi elemento o crea al volo?

  • avere un elemento nel markup, nascosto con i CSS. Se JS è abilitato, mostra quell'elemento.

  • non hanno alcun elemento nella marcatura e creare al volo, se JS è abilitato.

Se l'utente non ha JS, non voglio che venga mostrato un div. La mia domanda non è come codificare i diversi casi, è qual è il migliore e perché.

EDIT: Quando dico "migliore" intendo sostenere la vostra risposta con questo che è la migliore per voi. Può essere velocità/semantica/ecc. Quello che voglio è essere in grado di avere una visione migliore dei pro e dei contro di ciascuno. Anche la velocità non è un problema, perché è solo un elemento quindi sarebbe come millisecondi.

Per la prima opzione, è probabilmente più veloce, ma poi abbiamo delle regole di markup e CSS inutili. Perché se non c'è JS, non avrebbe senso avere l'elemento, e tanto meno nasconderlo.

Ora la seconda opzione, anche se potrebbe non essere così veloce, continuo le varie parti separate e veramente solo caricare ciò che deve essere caricato.

+1

Che cosa si intende per "migliore"? Velocità/prestazioni o semantica? – j08691

+0

Se vuoi mostrare l'elemento solo se l'utente ha javascript, lo inserirò nella dom come se lo nascondi con css e potresti essere punito dai motori di ricerca per farlo. Inoltre, le persone con chi ha disabilitato il css (o alcuni screen reader) avranno anche accesso al contenuto. Ma questa è solo la mia opinione – Pete

+0

@Pete, i motori di ricerca sono abbastanza intelligente per ignorare il contenuto nascosto con 'visualizzazione: none', possono punirti se c'è un sacco di contenuti di essere spinto fuori dalla vista con' text-align' però. E naturalmente, per "motori di ricerca" intendo "Google". – zzzzBov

risposta

6

manipolazioni DOM sono i più costosi. Mostrare il codice esistente è più veloce che iniettarlo.

+4

Anche se è vero, le prestazioni in JavaScript sono raramente un problema a causa della quantità di tempo di inattività della pagina. – zzzzBov

+0

Consente inoltre di personalizzare la pagina senza eseguire js ogni volta che si desidera applicare uno stile a un particolare elemento. – Liam

+0

Inoltre, non è raro che qualcuno non abbia JS, quindi il codice extra verrebbe utilizzato più spesso. Quindi la maggior parte dei carichi chiamerebbe una funzione JS, che genererebbe un elemento, quindi assegnerà le regole CSS ad esso ... che è decisamente meno efficiente di mostrare semplicemente un div nascosto. –