Pular para o conteúdo principal

Calculadora de Especificidade CSS

Calcule a especificidade CSS de um ou mais seletores como uma tupla (A, B, C) — contagens de ID, class/attribute/pseudo-class e type/pseudo-element — para depurar por que uma regra de estilo não está vencendo.

Entrada

Saída

Especificidade
SeletorIDClasseTipoEspecificidade
No data yet
Isso foi útil?

Mais formas de usar esta ferramenta

API REST

curl -X POST https://api.iotools.cloud/v1/tool/css-specificity-calculator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "selectors": "#header"
  }'

Troque pela sua própria chave, da sua conta. Os campos da ferramenta viram o corpo da requisição — sem envelope.

Peça a um agente de IA

Use the IOTools `css-specificity-calculator` tool (CSS Specificity Calculator) on this input:

YOUR_INPUT_HERE

Cole isto em qualquer agente conectado ao servidor MCP do IOTools e depois adicione sua entrada.

Widget para incorporar

<iframe
  src="https://iotools.cloud/embed/css-specificity-calculator/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Calculadora de Especificidade CSS — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

Coloque isso na sua própria página — grátis, sem chave, só um link de volta.

Custo por chamada de API/MCPA partir de 5 créditos
Precisa de mais créditos?Ver preços

Também disponível via

Guias

O que é especificidade CSS?

Quando duas regras CSS direcionam o mesmo elemento e definem a mesma propriedade, o navegador precisa de um critério de desempate para decidir qual vence. Esse critério é a especificidade — uma pontuação calculada a partir do próprio seletor, não de onde a regra aparece na folha de estilos (isso só importa como um critério de desempate final, quando a especificidade é igual). Um seletor mais específico sempre vence um menos específico, independentemente de qual regra foi escrita por último.

O sistema (A, B, C)

A especificidade é expressa como três números, comparados da esquerda para a direita como um número de versão — qualquer diferença em A supera qualquer diferença em B, que supera qualquer diferença em C:

  • A — Seletores de ID. Cada #id no seletor adiciona um.
  • B — classes, attributes e pseudo-classes. Cada .class, [attr] ou pseudo-class do tipo :hover adiciona um.
  • C — types e pseudo-elements. Cada nome de tag (div, a) e cada pseudo-element (::before, ::after e as formas single-colon legacy :before/:after/:first-line/:first-letter) adiciona um.

O seletor universal (*) e combinadores ( , >, +, ~) sempre contribuem zero — eles restringem o que é selecionado, não quão específica é a seleção. Assim, #header marca (1, 0, 0), .nav a:hover marca (0, 2, 1) (dois seletores class-like, um type), e .btn.btn-primary — duas classes no mesmo elemento — marca (0, 2, 0), vencendo uma regra de classe única mesmo sendo do "mesmo tipo" de seletor.

A armadilha :not() / :is() / :has()

CSS moderno marca :not(), :is() e :has() pela especificidade de seu argumento mais específico, não como uma pseudo-class plana. Esta calculadora usa a aproximação mais simples, anterior aos Seletores-4 em vez disso: cada uma delas (e qualquer outra pseudo-class funcional, como :nth-child()) conta como uma única pseudo-class — um +1 plano para B, independentemente do que está entre parênteses. É um corte de escopo documentado, não um bug: mantém o parser simples e é preciso para o caso comum (um único argumento não aninhado), mas subestimará um :not() envolvendo algo com um ID dentro. :where() sempre marca zero, conforme a especificação, não importa seu conteúdo.

Como usar

Cole um seletor CSS por linha — tão simples quanto .btn ou tão complexo quanto #main .content > p::before:hover. Cada linha recebe sua própria linha com suas contagens de ID, class e type mais a pontuação (A, B, C) combinada. Os resultados são atualizados conforme você digita.

FAQ

Por que div > p::before supera #main... ou não? Não supera — um ID (A) sempre supera qualquer número de seletores de type ou pseudo-elements (C), por definição de como os três números são comparados.

A ordem das regras importa se a especificidade for igual? Sim — quando duas regras têm especificidade idêntica, a que aparece depois na cascata (ou foi carregada depois) vence. !important substitui a especificidade completamente, e inline style="" attributes superam qualquer regra baseada em seletor.

Isso lida com listas de seletores como .a, .b? Trate cada grupo separado por vírgula como sua própria linha para uma análise por seletor — uma lista de seletores aplica sua regra a cada seletor independentemente, e cada um pode ter uma especificidade diferente.

Privacidade

A análise e pontuação ocorrem inteiramente no seu navegador. Os seletores que você cola nunca são enviados ou armazenados.

cssspecificityselectorsweb-development

Ama as ferramentas? Livre-se dos anúncios.

Um único pagamento remove todos os anúncios da sua conta, para sempre. Sem assinatura, sem rastreamento.