ForHosting KIT · Web: scraping y monitoreo

Ordenar selectores CSS por especificidad

La especificidad CSS determina qué declaración en conflicto puede imponerse antes de considerar el orden de aparición y la importancia, pero comparar a simple vista una lista extensa de selectores es lento y propenso a errores.

● BetaGratis · en su navegador
Úselo desde WebAPIEmailTelegramApp pronto

Esta herramienta recibe selectores CSS individuales, valida su sintaxis, calcula el valor de especificidad de tres partes y devuelve la lista completa ordenada de menor a mayor. Reconoce pseudoclases funcionales modernas como :is(), :not(), :has(), :where() y :nth-child(), y conserva el orden original cuando dos selectores tienen el mismo peso.

Cómo leer la puntuación de especificidad de tres partes

Cada resultado utiliza la estructura habitual de ID, clases y tipos. El primer número cuenta selectores de ID como <code>#checkout</code>. El segundo cuenta clases, selectores de atributo y pseudoclases como <code>.active</code>, <code>[disabled]</code> y <code>:hover</code>. El tercero cuenta selectores de tipo y pseudoelementos como <code>button</code> y <code>::before</code>. Los selectores universales y los combinadores no suman puntos. La comparación es lexicográfica: un ID supera cualquier cantidad de entradas en las otras columnas, y una clase supera cualquier cantidad de selectores de tipo cuando coinciden los ID. El arreglo <code>specificity</code> resulta práctico para programas, mientras que <code>specificity_text</code> presenta el mismo valor en un formato compacto y legible. Los resultados se ordenan de forma ascendente, por lo que las reglas reutilizables aparecen primero y los selectores más difíciles de sobrescribir quedan al final. Si dos puntuaciones coinciden, la herramienta conserva su orden de entrada en vez de imponer un criterio alfabético secundario. Así, las ejecuciones repetidas son predecibles y mantienen el contexto del archivo CSS o de la lista de revisión.

Tratamiento correcto de las pseudoclases modernas

Las pseudoclases funcionales son la causa más frecuente de errores en cálculos manuales. <code>:where()</code> siempre aporta especificidad cero, incluidos los selectores de su interior, de modo que permite precisar una estructura sin dificultar la sobrescritura de una regla. En cambio, <code>:is()</code>, <code>:not()</code> y <code>:has()</code> aportan la especificidad del argumento más específico, sin añadir un punto propio de pseudoclase. Las formas <code>:nth-child()</code> y <code>:nth-last-child()</code> aportan un punto de pseudoclase más la mayor especificidad de una lista opcional introducida por <code>of</code>. También se contemplan formas del árbol de sombra como <code>:host()</code> y <code>::slotted()</code>. El analizador recorre paréntesis anidados, corchetes, cadenas entre comillas y escapes, por lo que no confunde las comas internas de una función con separadores de nivel superior. Envíe cada elemento como un solo selector. Una coma de nivel superior representaría varios selectores con puntuaciones potencialmente distintas; por eso se rechaza en lugar de reducirla a un único valor engañoso. Esta regla mantiene una correspondencia exacta entre cada entrada y una puntuación de salida.

Simplifique la cascada con la lista ordenada

Un informe de especificidad es más útil como ayuda para refactorizar que como invitación a crear selectores cada vez más fuertes. Pegue selectores representativos de un componente, sistema de diseño o archivo heredado y examine el extremo superior del resultado. Los saltos grandes suelen revelar ID, estados con demasiados calificadores o argumentos potentes ocultos dentro de <code>:is()</code> o <code>:not()</code>. Esas reglas pueden obligar al código posterior a repetir detalles estructurales solo para sobrescribir una declaración. Considere sustituirlas por una clase con una finalidad concreta, rebajar el contexto opcional mediante <code>:where()</code> u organizar capas para que la precedencia no dependa de una escalada de puntuaciones. El extremo inferior también aporta información: las reglas de elementos y utilidades ligeras se reutilizan mejor cuando su función está clara. Los procesos automatizados pueden llamar a la API por $0.002 para detectar selectores nuevos que superen el límite definido por su equipo, registrar la especificidad junto al CSS generado o mostrar diagnósticos ordenados durante una revisión. Una entrada no válida hace fallar toda la solicitud, por lo que un informe parcial nunca oculta un selector mal formado. El cálculo es determinista y no usa la red: la misma entrada siempre produce los mismos valores y el mismo orden.

Auditar una hoja de estilos heredada

Ordene los selectores por peso para localizar ID y reglas muy calificadas que dificultan las sobrescrituras habituales.

Revisar el CSS de un componente

Compare selectores nuevos con las convenciones existentes antes de incorporar cambios a un sistema de diseño compartido.

Aplicar un límite de especificidad

Calcule puntuaciones en una comprobación automática y marque los selectores que excedan el máximo elegido por su equipo.

¿Qué significa cada número de especificidad?

Los tres valores cuentan, respectivamente, selectores de ID, selectores similares a clases y selectores similares a tipos; se comparan de izquierda a derecha.

¿Cómo se contabiliza :where()?

:where() y todo lo incluido en su argumento aportan especificidad cero, aunque la sintaxis del selector sí se valida.

¿Cómo se contabilizan :is(), :not() y :has()?

Cada una aporta la especificidad del selector más específico de su lista de argumentos, sin sumar un punto adicional de pseudoclase.

¿Puede un elemento de entrada contener comas?

No en el nivel superior. Envíe cada selector por separado, pues los miembros de una lista pueden tener distinta especificidad. Se admiten comas dentro de pseudoclases funcionales compatibles.

¿Qué ocurre si dos selectores tienen la misma especificidad?

Se conserva el orden original de entrada, lo que hace que la clasificación sea estable y determinista.

¿Cuánto cuesta una solicitud de API?

Cada solicitud cuesta $0.002. La versión para navegador se ejecuta localmente sin coste.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/web/css-specificity-sort

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/web/css-specificity-sort \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"selectors":["button",".toolbar button:hover","#app .toolbar button"]}'
{
  "selectors": [
    "button",
    ".toolbar button:hover",
    "#app .toolbar button"
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "web.css_specificity_sort",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

max_items1000
max_selector_length4096
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Ver la documentación completa del KIT →