Tutorial de CSS

CSS INÍCIO Introdução CSS Sintaxe CSS Seletores CSS CSS Como fazer Comentários CSS Cores CSS Planos de fundo CSS Bordas CSS Margens CSS Preenchimento CSS CSS Altura/Largura Modelo de caixa CSS Esboço CSS Texto CSS Fontes CSS Ícones CSS Links CSS Listas CSS Tabelas CSS Exibição CSS Largura máxima do CSS Posição CSS Índice Z CSS Estouro de CSS CSS flutuante Bloco CSS Inline Alinhamento CSS Combinadores CSS Pseudoclasse CSS Pseudoelemento CSS Opacidade CSS Barra de navegação CSS Listas suspensas de CSS Galeria de imagens CSS Sprites de imagem CSS Seletores de atributos CSS Formulários CSS Contadores CSS Layout do site CSS Unidades CSS Especificidade CSS CSS !importante Funções matemáticas CSS

CSS Avançado

Cantos arredondados CSS Imagens de borda CSS Planos de fundo CSS Cores CSS Palavras-chave de cores CSS Gradientes CSS Sombras CSS Efeitos de texto CSS Fontes da Web CSS Transformações CSS 2D Transformações CSS 3D Transições CSS Animações CSS Dicas de CSS Imagens de estilo CSS Reflexão de imagem CSS Ajuste de objeto CSS posição do objeto CSS Mascaramento CSS Botões CSS Paginação CSS CSS Múltiplas Colunas Interface de usuário CSS Variáveis ​​CSS Dimensionamento da caixa CSS Consultas de mídia CSS Exemplos de CSS MQ CSS Flexbox

Responsivo a CSS

Introdução ao RWD Janela de visualização RWD Visualização de Grade RWD Consultas de mídia RWD Imagens RWD Vídeos RWD Estruturas RWD Modelos RWD

Grade CSS

Introdução à grade Contêiner de Grade Item de grade

CSS SASS

Tutorial SASS

Exemplos de CSS

Modelos CSS Exemplos de CSS teste css Exercícios de CSS Certificado CSS

Referências CSS

Referência CSS Seletores CSS Funções CSS Aural de referência CSS Fontes CSS seguras para a Web CSS Animatable Unidades CSS CSS PX-EM Converter Cores CSS Valores de cores CSS Valores padrão de CSS Suporte ao navegador CSS

Especificidade CSS


O que é Especificidade?

Se houver duas ou mais regras CSS que apontam para o mesmo elemento, o seletor com o maior valor de especificidade "vencerá" e sua declaração de estilo será aplicada a esse elemento HTML.

Pense na especificidade como uma pontuação/classificação que determina qual declaração de estilo será aplicada a um elemento.

Observe os seguintes exemplos:

Exemplo 1

Neste exemplo, usamos o elemento "p" como seletor e especificamos uma cor vermelha para esse elemento. O texto ficará vermelho:

<html>
<head>
  <style>
    p {color: red;}
  </style>
</head>
<body>

<p>Hello World!</p>

</body>
</html>

Agora, veja o exemplo 2:

Exemplo 2

Neste exemplo, adicionamos um seletor de classe (chamado "teste") e especificamos uma cor verde para essa classe. O texto agora será verde (mesmo que tenhamos especificado uma cor vermelha para o seletor de elemento "p". Isso ocorre porque o seletor de classe tem prioridade mais alta:

<html>
<head>
  <style>
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p class="test">Hello World!</p>

</body>
</html>

Agora, veja o exemplo 3:

Exemplo 3

Neste exemplo, adicionamos o seletor de id (chamado "demo"). O texto agora será azul, porque o seletor de id tem prioridade mais alta:

<html>
<head>
  <style>
    #demo {color: blue;}
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p id="demo" class="test">Hello World!</p>

</body>
</html>

Agora, veja o exemplo 4:

Exemplo 4

Neste exemplo, adicionamos um estilo embutido para o elemento "p". O texto agora será rosa, porque o estilo embutido recebe a prioridade mais alta:

<html>
<head>
  <style>
    #demo {color: blue;}
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p id="demo" class="test" style="color: pink;">Hello World!</p>

</body>
</html>


Hierarquia de Especificidade

Cada seletor CSS tem seu lugar na hierarquia de especificidade.

Existem quatro categorias que definem o nível de especificidade de um seletor:

  • Estilos embutidos - Exemplo: <h1 style="color: pink;">
  • IDs - Exemplo: #navbar
  • Classes, pseudoclasses, seletores de atributos - Exemplo: .test, :hover, [href]
  • Elementos e pseudoelementos - Exemplo: h1, :before

Como calcular a especificidade?

Memorize como calcular a especificidade!

Comece em 0, adicione 100 para cada valor de ID, adicione 10 para cada valor de classe (ou pseudoclasse ou seletor de atributo), adicione 1 para cada seletor de elemento ou pseudoelemento.

Nota: O estilo embutido recebe um valor de especificidade de 1000 e sempre recebe a prioridade mais alta!

Nota 2: Há uma exceção a esta regra: se você usar a !important regra, ela substituirá até mesmo os estilos embutidos!

A tabela abaixo mostra alguns exemplos de como calcular os valores de especificidade:

Selector Specificity Value Calculation
p 1 1
p.test 11 1 + 10
p#demo 101 1 + 100
<p style="color: pink;"> 1000 1000
#demo 100 100
.test 10 10
p.test1.test2 21 1 + 10 + 10
#navbar p#demo 201 100 + 1 + 100
* 0 0 (the universal selector is ignored)

O seletor com o maior valor de especificidade ganhará e entrará em vigor!

Considere estes três fragmentos de código:

Exemplo

A: h1
B: h1#content
C: <h1 id="content" style="color: pink;">Heading</h1>

A especificidade de A é 1 (um seletor de elemento)
A especificidade de B é 101 (uma referência de ID + um seletor de elemento)
A especificidade de C é 1000 (estilo embutido)

Como a terceira regra (C) tem o maior valor de especificidade (1000), esta declaração de estilo será aplicada.



Mais exemplos de regras de especificidade

Especificidade igual: a regra mais recente vence - Se a mesma regra for escrita duas vezes na folha de estilo externa, a regra mais recente vence:

Exemplo

h1 {background-color: yellow;}
h1 {background-color: red;}


Os seletores de ID têm uma especificidade mais alta do que os seletores de atributo - Observe as três linhas de código a seguir:

Exemplo

div#a {background-color: green;}
#a {background-color: yellow;}
div[id=a] {background-color: blue;}

a primeira regra é mais específica que as outras duas e, portanto, será aplicada.


Os seletores contextuais são mais específicos do que um seletor de elemento único - A folha de estilo incorporada está mais próxima do elemento a ser estilizado. Então na seguinte situação

Exemplo

From external CSS file:
#content h1 {background-color: red;}

In HTML file:
<style>
#content h1 {background-color: yellow;}
</style>

a última regra será aplicada.


Um seletor de classe supera qualquer número de seletores de elemento - um seletor de classe como .intro supera h1, p, div, etc:

Exemplo

.intro {background-color: yellow;}
h1 {background-color: red;}


O seletor universal (*) e os valores herdados têm uma especificidade de 0 - O seletor universal (*) e os valores herdados são ignorados!