Calculadora de Especificidad CSS
Pega selectores CSS y ve al instante sus puntuaciones de especificidad lado a lado. Entiende qué reglas ganan y por qué — clasificadas por peso.
Selectores CSS
Ejemplos Rápidos
Resultados de Especificidad
La especificidad se calcula como (a, b, c)
Introduce selectores CSS arriba para ver sus puntuaciones de especificidad.
a
IDs
#id
b
Clases / Attrs / Pseudo-clases
.class [attr] :hover
c
Elementos / Pseudo-elementos
div p ::before
Herramientas Relacionadas
Acerca de la Calculadora de Especificidad CSS
Cómo Funciona
- Introduce uno o más selectores CSS, uno por línea, en el área de entrada
- La herramienta analiza cada selector y cuenta IDs, clases/atributos/pseudo-clases y elementos
- La especificidad se muestra como una puntuación de tres partes: (a, b, c)
- Los selectores se clasifican automáticamente de mayor a menor especificidad
- Haz clic en "Copiar resultados" para copiar la tabla de especificidad al portapapeles
- Usa la comparación para entender qué selectores anularán a otros
Casos de Uso Comunes
- Depurar problemas de sobreescritura CSS comparando pesos de selectores
- Aprender las reglas de especificidad CSS de forma interactiva
- Revisar selectores antes de añadir nuevos estilos a una hoja de estilos
- Enseñar especificidad CSS a desarrolladores o estudiantes
- Optimizar la especificidad de selectores para reducir el uso de !important
- Verificar rápidamente qué regla gana cuando los estilos entran en conflicto
Preguntas Frecuentes
¿Qué es la especificidad CSS?
La especificidad CSS es un peso asignado a un selector CSS que determina qué regla de estilo se aplica cuando varias reglas coinciden con el mismo elemento. Se representa como un valor de tres partes (a, b, c) donde a cuenta los selectores de ID, b cuenta los selectores de clase/atributo/pseudo-clase y c cuenta los selectores de tipo de elemento y pseudo-elementos.
¿Cómo se calcula la especificidad?
La especificidad se calcula contando tres categorías en un selector: (a) selectores de ID como #header, (b) selectores de clase (.card), selectores de atributo ([type="text"]) y pseudo-clases (:hover, :nth-child), y (c) selectores de tipo (div, p) y pseudo-elementos (::before). El selector universal (*) y los combinadores (+, ~, >) no tienen especificidad.
¿Qué selector gana cuando dos reglas entran en conflicto?
Gana el selector con mayor especificidad. Compara los valores (a, b, c) de izquierda a derecha: más IDs (a) siempre vence a más clases (b), y más clases siempre vencen a más elementos (c). Si la especificidad es igual, gana la regla que aparece después en la hoja de estilos.
¿Para qué sirve la puntuación de especificidad en esta herramienta?
La puntuación numérica es un valor comparable simplificado (a * 10000 + b * 100 + c) para clasificar selectores de mayor a menor. No debe interpretarse como un valor CSS literal — la especificidad CSS no es un número único sino una comparación de tres partes.
¿Afecta !important a la especificidad?
!important no forma parte de la especificidad en sí — anula todas las demás declaraciones independientemente de la especificidad. Esta herramienta calcula solo la especificidad del selector, no el efecto de !important. Evita usar !important en CSS de producción; prefiere selectores más específicos.
¿Tiene especificidad el selector universal (*)?
No. El selector universal (*) tiene especificidad cero (0, 0, 0). Los combinadores (+, >, ~, espacio) tampoco contribuyen a la especificidad. Solo los selectores de ID, clase, atributo, pseudo-clase, elemento y pseudo-elemento aumentan la especificidad.
¿Cómo afecta :not() a la especificidad?
La pseudo-clase :not() en sí no tiene especificidad, pero sí el selector que contiene. Por ejemplo, :not(#id) contribuye (1, 0, 0) a la especificidad (un ID). Esta herramienta tiene en cuenta :not() analizando el argumento dentro de los paréntesis.
¿Cuál es la diferencia entre :: y : para pseudo-elementos?
:: es la sintaxis moderna de doble dos puntos para pseudo-elementos (::before, ::after, ::placeholder). La sintaxis heredada de un solo dos puntos (:before, :after) aún es compatible con los navegadores pero está obsoleta. Ambas suman 1 al conteo c (elemento/pseudo-elemento).
¿Cómo se comparan los estilos en línea con los selectores?
Los estilos en línea (p.ej., style="color: red") tienen una especificidad de (1, 0, 0, 0) — mayor que cualquier selector — representada como una cuarta categoría no contemplada en esta herramienta. En la práctica, los estilos en línea siempre anulan las reglas de la hoja de estilos (a menos que se use !important).
¿Puedo comparar selectores con la misma puntuación de especificidad?
Sí. Cuando dos selectores tienen los mismos valores (a, b, c), gana el que aparece después en el orden fuente. Esta herramienta los muestra con el mismo rango cuando tienen puntuaciones idénticas, y puedes consultar el desglose (a, b, c) para confirmar que son equivalentes en peso.
¿Por qué debo minimizar la especificidad en mi CSS?
Una alta especificidad hace que los estilos sean más difíciles de anular y mantener. Para anular un estilo, debes escribir un selector aún más específico o usar !important. Mantener baja la especificidad hace tu CSS más modular y predecible, especialmente en proyectos grandes.
¿Esta herramienta admite todos los tipos de selectores CSS?
Esta herramienta admite los selectores CSS3 más comunes, incluidos IDs, clases, atributos, pseudo-clases (incluyendo :not()), pseudo-elementos y selectores de tipo. Los selectores modernos complejos como :is(), :where(), :has() pueden no analizarse completamente.