2010-09-14 8 views
16

Uno de los muchachos aquí en el trabajo pone el nombre de la etiqueta frente a todos sus selectores de CSS para los identificadores de elementos. Por ejemplo:CSS: ¿usar tipo de etiqueta antes de ID?

div#footer { 

} 

Esto, en lugar de sólo:

#footer { 

} 

Su fundamento es que se trata de una búsqueda más rápida para la mayoría de los navegadores, ya que no tienen que comprobar los id atributos de todos los tipos de elemento: solo div elementos. También señala que esto debe hacerse con clases (por ejemplo, div.header-label para elementos <div class="header-label"...).

Suena razonable y racional, pero ¿es cierto?

+0

Cambia tu ejemplo a div.footer, porque como dijiste, tu compañero de trabajo dijo que debería hacerse con las clases. Muchas de las respuestas señalan que una identificación debe ser única dentro del contexto de una página. – JohnB

+0

"dentro del contexto de una página" - Y ese es realmente el quid de la cuestión. El selector de etiqueta + id se puede utilizar para usar una ID de manera diferente en páginas diferentes, ya que al agregar la etiqueta se especifica que las reglas se aplicarán cuando se encuentren juntas. – d2burke

+0

Ver también: http://stackoverflow.com/q/3666286/124238 –

Respuesta

19

Su compañero de trabajo está mal, es exactamente lo contrario:

Pero también tienen en cuenta que la optimización de CSS es la micro-optimización y, finalmente, sólo irrelevante en la mayoría de los casos:

+1

+1 para la referencia de documento agradable! – mkoistinen

+2

google link: * "Prefiere los selectores de clase y ID sobre los selectores de etiquetas." * ¡Ojalá hubiera hecho esta pregunta hace 3 años! **: (** Pensé que era bueno usar selectores de etiquetas tanto como fuera posible, mi filosofía de CSS está al revés! Gran pregunta Foobarbis y gran respuesta Dave! – JohnB

2

Probablemente no sea cierto; el motor de diseño es probable que construya una tabla hash.

Sin embargo, definitivamente no hará una diferencia notable, a menos que su página tenga una cantidad insana de elementos. (En cuyo caso tiene problemas peores)

Debe usar el selector que sea más legible.
Además, recuerde que alguien podría cambiar #footer a <span>.

+0

Me pregunto si Jon Skeet o alguien sabrá con certeza la respuesta a esta pregunta, al menos en cuanto a Chrome es preocupado. – JohnB

+1

@JohnB: Ve a leer la fuente de WebKit. (y buena suerte) – SLaks

0

Personalmente, no creo que el rendimiento sea un problema aquí, a menos que muchos estilos deban cambiarse dinamicamente.

En cualquier caso, los dos ejemplos son semánticamente diferentes ya que #footer cubrirá los casos que div#footer no. Así que, aparte del gusto personal, estamos hablando de dos cosas diferentes. Entonces, si realmente está usando ID como deberían ser, no hay ninguna diferencia.

+2

Sin embargo, no cubrirá ninguno/válido/casos, ya que los ID deben ser únicos independientemente de las etiquetas en las que se encuentren. – mkoistinen

+0

sí, pero estoy acostumbrado a ver todo tipo de cosas sobre las buenas restricciones de CSS, así que es mejor estar seguro, ¡en cualquier caso, lo he especificado ahora! – Jack

1

La única vez que esto sería una práctica útil, en mi humilde opinión, es cuando tiene múltiples tipos de etiquetas usando la misma ID, que es de Por supuesto, no válido de todos modos. Sin embargo, si se le proporcionó un código HTML/CSS no válido para comenzar y no pudo corregirlo correctamente, usar TAGTYPE # ID podría ser útil.

0

Adjuntar la etiqueta a la identificación es más específico. Puedes crear una identificación en tu CSS que puedes aplicar a CUALQUIER elemento, pero si adjuntas el nombre de la etiqueta SOLO puedes usar esas reglas para ESO (a menos que menciones otros elementos, clases o identificadores con una coma) con esa identificación ver :

http://www.w3.org/TR/CSS2/selector.html#id-selectors

0

es difícil imaginar un uso válido para esta "característica" de CSS.

Supongamos que un formulario tiene un campo year.

input#year { 
    width: 4em; 
} 

Esto evitaría que la regla de la aplicación si, por ejemplo, el campo se representa como un select.

En cuanto al factor de rendimiento, creo que @Dave es el mejor desenmascarillado.

+0

Entonces, estoy jugando a los defensores del diablo aquí: ¿Qué pasaría si esa misma ID se usó en otra página de una aplicación masiva en una etiqueta separada? Digamos que quería usar esa ID para referirse a un valor en jQuery sin importar el tipo de elemento, pero en cuanto a la visualización va, desea asegúrese de darle un estilo determinado DEPENDIENDO del tipo de elemento? – d2burke

+0

Como dije, es difícil de imaginar. – harpo

Cuestiones relacionadas