Explica como o navegador determina quais os elementos aos quais devem ser aplicados estilos CSS.
sobes.tech IA
Resposta da IA
O navegador determina quais elementos aplicar estilos CSS usando mecanismos de busca e correspondência baseados em seletores CSS.
O processo ocorre da seguinte forma:
- Análise de CSS: O navegador analisa os ficheiros CSS e os blocos
<style>no HTML, criando uma representação interna dos estilos. - Análise de HTML: O navegador analisa o HTML, criando a Árvore DOM (Document Object Model).
- Correspondência (Matching): Para cada nó na Árvore DOM, o navegador tenta fazer corresponder com as regras CSS. Isto é feito verificando os seletores nas regras CSS. Normalmente, o navegador trabalha de partes mais específicas do seletor para menos específicas (da direita para a esquerda). Por exemplo, para o seletor
div article p, primeiro encontrap, depois verifica se é um descendente dearticle, que por sua vez é um descendente dediv. - Aplicação (Applying): Se um nó DOM corresponder a uma ou várias regras CSS, o navegador aplica os estilos correspondentes a esse nó. Em caso de várias regras aplicáveis, o navegador determina o conjunto final de estilos usando regras de especificidade, ordem de declaração e herança.
Especificidade (Specificity):
A especificidade é um algoritmo usado pelo navegador para calcular o peso de um seletor CSS. Um seletor mais específico tem prioridade maior na aplicação de estilos. A especificidade é calculada com base na quantidade de ID, classes/pseudoclasses/atributos e elementos/pseudoelementos no seletor.
// a = quantidade de ID
// b = quantidade de classes, pseudoclasses, atributos
// c = quantidade de elementos, pseudoelementos
// Estilos inline têm prioridade máxima (1, 0, 0, 0)
// O seletor `*` tem especificidade (0, 0, 0)
Exemplo de cálculo de especificidade:
p: (0, 0, 1).classe: (0, 1, 0)#id: (1, 0, 0)div p: (0, 0, 2)div .classe: (0, 1, 1)
Ordem de declarações:
Se duas regras tiverem a mesma especificidade, aplica-se a regra que foi declarada por último no código CSS.
Herança (Inheritance):
Algumas propriedades CSS são herdadas dos elementos pais para os filhos (por exemplo, color, font-family). Se uma propriedade não tiver um valor explícito no elemento, o navegador procura um valor herdado para cima na Árvore DOM.
Assim, o navegador determina os estilos para um elemento fazendo correspondência com os seletores, resolvendo conflitos com base na especificidade e na ordem de declaração, além de considerar a herança.