En las hojas de estilo en cascada (CSS) la especificidad hace referencia a cómo se calcula la prevalencia cuando algunas reglas de estilo entran en conflicto.
De las primeras cosas que aprendemos cuando empezamos a trabajar con CSS es que, en caso de declaraciones conflictivas, la posterior sobreescribe a la anterior.
O sea que, en el siguiente ejemplo:
El color del texto dentro de la etiqueta h1
se mostrará de color azul, porque esa segunda declaración sobrescribe a la primera
Selectores de clase
Pero, ¿qué pasa en este otro ejemplo?:
Sí el código HTML fuera este:
El texto dentro de la etiqueta h1
se mostrará de color rojo, aunque la regla esté antes de la que lo define a los h1
como azul, porque los selectores de clase (en este caso .intro
) tienen prevalencia sobre los selectores de tipo.
Selectores de ID
Y, en este otro caso:
Sí el código HTML fuera este:
El texto dentro de la etiqueta h1
se mostrará de color verde, aunque la regla esté antes de la que define a los h1
como azul o de la clase .intro
que los define como rojo, porque los selectores de ID (en este caso #comentarios
) tienen predominancia sobre los selectores de clase.
Estilos en línea
Con la premisa de separar el contenido de la presentación no deberíamos utilizar estilos en línea, pero, llegado el caso, en este código HTML (vinculado a las mismas reglas de estilo del apartado anterior):
...el texto dentro de la etiqueta h1
se mostrará de color cian porque los estilos en línea (los declarados dentro del código HTML con el atributo style en uno de sus elementos) sobreescriben a los demás.
Desde los más específicos a los más genéricos, este es el orden de consideración al momento de resolver estilos conflictivos (los que están más arriba en esta lista, sobreescriben a los que están más abajo):
- Estilos en línea
- Selectores de ID (
#
) - Selectores de clases (
.
) - Selectores de tipo (
h1
,p
, etc.)
Aunque también existe la posibilidad de agregar la excepción !important
en una regla de estilo para darle prioridad sobre cualquier otra. Pero se considerada una mala práctica porque rompe la cascada de las hojas de estilo.
O sea, solo se debería considerar el uso de !important
cuando no haya otra forma de conseguir el resultado que se busca.
Por otra parte, estas reglas para calcular la especificidad ignoran completamente al selector universal (*
), a los combinadores (
+
, >
, ~
) y a la pseudo-clase de negación (:not()
).
Para información más detallada sobre este tema fundamental a la hora de escribir hojas de estilo, pueden visitar la mdn web docs o, si entienden inglés, el siguiente video de WebDevSimplified también es muy claro al respecto:
No hay comentarios.:
Publicar un comentario
Lo que escriba a continuación será revisado antes de publicarse.
Gracias por tus comentarios.