Calculadora de especificidade CSS
Cole um ou mais seletores CSS, ou uma folha de estilos inteira, e leia a especificidade de cada seletor como a tripla (A, B, C) do Selectors Level 4, cada seletor simples nomeado com a coluna a que soma, os seletores ordenados como a cascata os ordena com os empates apontados, e os casos especiais explicados: :where() não conta nada, :is(), :not() e :has() tomam o argumento mais específico, :nth-child(of) soma o seu argumento, o seletor universal não soma nada, uma classe repetida conta duas vezes, um pseudoelemento legado de dois-pontos simples conta como um. Com o lembrete das cinco coisas que a cascata verifica antes da especificidade.
Web e HTTP10 seletores. O mais específico é .foo :is(.bar, #baz), com 1,1,0.
A especificidade de cada seletor
| posição | seletor | A | B | C | A,B,C |
|---|---|---|---|---|---|
| 10 | * | 0 | 0 | 0 | 0,0,0 |
| 9 | LI | 0 | 0 | 1 | 0,0,1 |
| 8 | UL LI | 0 | 0 | 2 | 0,0,2 |
| 7 | UL OL+LI | 0 | 0 | 3 | 0,0,3 |
| 6 | H1 + *[REL=up] | 0 | 1 | 1 | 0,1,1 |
| 5 | UL OL LI.red | 0 | 1 | 3 | 0,1,3 |
| 4 | LI.red.level | 0 | 2 | 1 | 0,2,1 |
| 3 | #x34y | 1 | 0 | 0 | 1,0,0 |
| 2 | #s12:not(FOO) | 1 | 0 | 1 | 1,0,1 |
| 1 | .foo :is(.bar, #baz) | 1 | 1 | 0 | 1,1,0 |
A conta seletores de ID; B conta seletores de classe, de atributo e pseudoclasses; C conta seletores de tipo e pseudoelementos. O seletor universal não conta nada. As especificidades se comparam coluna a coluna, A primeiro (Selectors Level 4).
Peça por peça
- 1
*0,0,0* 0*: o seletor universal é ignorado na contagem (Selectors Level 4).
- 2
LI0,0,1LI C - 3
UL LI0,0,2UL C(descendente)LI C - 4
UL OL+LI0,0,3UL C(descendente)OL C+LI C - 5
H1 + *[REL=up]0,1,1H1 C+* 0[REL=up] B*: o seletor universal é ignorado na contagem (Selectors Level 4).
- 6
UL OL LI.red0,1,3UL C(descendente)OL C(descendente)LI C.red B - 7
LI.red.level0,2,1LI C.red B.level B - 8
#x34y1,0,0#x34y A - 9
#s12:not(FOO)1,0,1#s12 A:not(FOO) C:not(FOO): a especificidade de :not() é a do seletor mais específico da sua lista de argumentos; a negação não muda nada.
- 10
.foo :is(.bar, #baz)1,1,0.foo B(descendente):is(.bar, #baz) A:is(.bar, #baz): a especificidade de :is() é a do seletor mais específico da sua lista de argumentos.
O que a cascata verifica antes da especificidade
A especificidade só decide quando tudo acima dela está empatado. O CSS Cascading and Inheritance Level 5 ordena as declarações por estes critérios, em ordem decrescente de prioridade:
- Origem e importância: transições primeiro, depois declarações importantes do agente de usuário, importantes do usuário, importantes do autor, animações, normais do autor, normais do usuário, normais do agente de usuário. Uma declaração !important do autor vence qualquer declaração normal, seja qual for o seletor.
- Contexto: entre contextos de shadow tree, o contexto externo vence para declarações normais e o interno para as importantes.
- Estilos ligados ao elemento: um atributo style vence qualquer regra de estilo da mesma importância.
- Camadas de cascata: para declarações normais vence a última camada, para as importantes a primeira; declarações fora de qualquer camada ficam numa camada final implícita.
- Especificidade: a tripla comparada aqui. Cada declaração tem a especificidade do seletor da sua regra.
- Ordem de aparição: vence a última declaração na ordem do documento, com os atributos style colocados depois de todas as folhas de estilo.
A calculadora lê a sintaxe dos seletores, não um documento: não sabe se um seletor casa com algo, e uma lista de seletores é ordenada pelos seus membros, enquanto num casamento real a especificidade em vigor é a do membro mais específico que casa. Namespaces são lidos, não resolvidos. A contagem segue o Selectors Level 4 (Working Draft, 22 de janeiro de 2026) e a ordem da cascata segue o CSS Cascade Level 5; ambos citados em Fontes.
Referências
- Selectors Level 4, W3C Working Draft 22 January 2026: Calculating a selector's specificity
- CSS Cascading and Inheritance Level 5, W3C Candidate Recommendation Snapshot 13 January 2022: 6.1 Cascade Sorting Order
- CSS Shadow Module Level 1, Editor's Draft 28 April 2026: the specificity of :host, :host(), :host-context() and ::slotted()