¿Qué es la especificidad de los selectores CSS y cómo funciona?
El navegador determina qué estilos mostrar en un elemento dependiendo de la especificidad de las reglas CSS. Asumimos que el navegador ya ha determinado las reglas que coinciden con un elemento particular. Entre las reglas coincidentes, se calculan cuatro valores separados por comas, a, b, c, d
, para cada regla basándose en lo siguiente:
a
indica si se están utilizando estilos en línea. Si la declaración de la propiedad es un estilo en línea en el elemento,a
es 1, de lo contrario 0.b
es el número de selectores de ID.c
es el número de selectores de clases, atributos y pseudoclases.d
es el número de selectores de etiquetas y pseudoelementos.
La especificidad resultante no es una puntuación, sino una matriz de valores que se pueden comparar columna por columna. Al comparar selectores para determinar cuál tiene la mayor especificidad, se mira de izquierda a derecha y se compara el valor más alto en cada columna. Así, un valor en la columna b
anulará los valores en las columnas c
y d
, sin importar cuáles sean. Por lo tanto, una especificidad de 0,1,0,0
sería mayor que una de 0,0,10,10
.
En los casos de igual especificidad: la última regla es la que cuenta. Si ha escrito la misma regla en su hoja de estilo (independientemente de si es interna o externa) dos veces, entonces la regla inferior en su hoja de estilo está más cerca del elemento a estilizar, se considera más específica y, por lo tanto, se aplicará.
Escribiría reglas CSS con baja especificidad para que puedan ser fácilmente anuladas si fuera necesario. Al escribir código de bibliotecas de componentes de interfaz de usuario CSS, es importante que tengan bajas especificidades para que los usuarios de la biblioteca puedan anularlos sin usar reglas CSS demasiado complicadas solo por aumentar la especificidad o recurrir a !important
.