"O que é a especificidade do CSS e a especificidade para CSS inline, interno e externo?"
A especificidade do CSS é um conceito fundamental que determina quais estilos são aplicados a um elemento quando múltiplas regras podem ser aplicadas.
Entender a especificidade ajuda os desenvolvedores a resolver conflitos entre diferentes regras CSS e garante que os estilos desejados sejam aplicados consistentemente.
A especificidade do CSS é calculada com base no tipo de seletores usados.
A maior especificidade é atribuída aos estilos inline, que são aplicados diretamente a um elemento através do atributo
style.
Neste exemplo, o primeiro parágrafo será vermelho enquanto os outros elementos p serão azuis. Isso ocorre porque estilos inline têm uma especificidade maior do que seletores de tipo como o seletor p mostrado no arquivo styles.css.
<link rel="stylesheet" href="styles.css">
<p style="color: red;">Red paragraph</p>
<p>Other paragraph</p>
<p>Another paragraph</p>
<p>Yet another paragraph</p>
p {
color: blue;
}
Em seguida, seletores de ID têm um alto nível de especificidade.
<link rel="stylesheet" href="styles.css">
<p id="para">Red paragraph</p>
<p>Other paragraph</p>
<p>Another paragraph</p>
<p>Yet another paragraph</p>
#para {
color: red;
}
p {
color: blue;
}
Em seguida, entram em cena os seletores de classe, seletores de atributo e pseudo-classes.
Exemplos incluem seletores de classe como .container e .button, seletores de atributo como [type="text"] e pseudo-classes como :hover. Estes têm um nível moderado de especificidade.
NOTA: Você aprenderá mais sobre pseudo-classes em lições futuras.
Neste exemplo, o primeiro parágrafo ficará vermelho porque um seletor id tem uma especificidade maior do que classes e seletores de tipo. Os elementos .example-para terão a cor verde enquanto os parágrafos restantes terão a cor azul.
<link rel="stylesheet" href="styles.css">
<p id="para">Example paragraph</p>
<p class="example-para">Other paragraph</p>
<p class="example-para">Another paragraph</p>
<p>Yet another paragraph</p>
#para {
color: red;
}
.example-para {
color: green;
}
p {
color: blue;
}
Seletores de tipo, como div e h1, e pseudo-elementos como ::before e ::after, têm uma especificidade menor em comparação com os grupos anteriores.
NOTA: Você aprenderá mais sobre pseudo-elementos em lições futuras.
<link rel="stylesheet" href="styles.css">
<p id="para">Example paragraph</p>
<p>Other paragraph</p>
<p>Yet another paragraph</p>
#para {
color: red;
}
p {
color: blue;
}
Finalmente, o seletor universal, representado por um asterisco *, tem a menor especificidade de todas.
Aqui está um exemplo de como definir a cor de todos os elementos para vermelho usando o seletor *. No entanto, você não verá nenhum elemento vermelho porque existem seletores de ID e tipo que substituem esses estilos, o que destaca a baixa especificidade do seletor *.
<link rel="stylesheet" href="styles.css">
<p id="para">Example paragraph</p>
<p>Other paragraph</p>
<p>Yet another paragraph</p>
* {
color: red;
}
#para {
color: green;
}
p {
color: blue;
}
Os valores de especificidade são calculados como um valor de quatro partes (a, b, c, d):
a: Estilos inline (1ou0).b: Número de seletores de ID.c: Número de seletores de classe, seletores de atributo e pseudo-classes.d: Número de seletores de tipo, pseudo-elementos e seletores universais.
- Estilos inline (
a) têm o maior peso, contribuindo com um valor de1para a primeira parte do valor de especificidade. - Seletores de ID (
b) têm o próximo peso mais alto, com cada ID contribuindo com1para a segunda parte do valor de especificidade. - Seletores de classe, seletores de atributo e pseudo-classes (
c) têm peso moderado, com cada um contribuindo com1para a terceira parte do valor de especificidade. - Seletores de tipo e pseudo-elementos (
d) têm o menor peso, com cada um contribuindo com1para a quarta parte do valor de especificidade. - Seletor universal (
*): O seletor universal contribui com0para o cálculo de especificidade e não afeta a especificidade. Sua inclusão em um seletor não altera o valor da especificidade.
(1, 0, 0, 0).
Aqui está outro exemplo de um estilo inline:
<p style="color: red;">This text is red.</p>
CSS interno é definido dentro de um elemento style na seção head do documento HTML. Ele tem especificidade menor do que estilos inline. Tanto o CSS interno quanto o externo compartilham o mesmo nível de especificidade — a especificidade é determinada pelos seletores usados, não pelo local onde o CSS é definido. Quando duas regras têm especificidade igual, a que aparece depois no documento vence. Então, se uma folha de estilo externa é linkada depois de um bloco interno style, as regras externas têm precedência. Se for linkada antes, as regras internas vencem.
O valor de especificidade para estilos internos é determinado pelos seletores usados. Por exemplo, um seletor ID dentro do CSS interno tem um valor de especificidade de (0, 1, 0, 0).
<head>
<style>
#text {
color: blue;
}
</style>
</head>
<body>
<div id="text">This text is blue.</div>
</body>
Neste exemplo, o texto ficará azul a menos que um estilo inline ou um seletor mais específico seja aplicado.
CSS externo é vinculado via um link elemento na head seção e é escrito em .css arquivos separados. Como o CSS interno, a especificidade dos estilos externos é determinada pelos seletores usados. O CSS externo oferece a melhor manutenção para projetos maiores.
O valor de especificidade para estilos externos também é determinado pelos seletores usados. Por exemplo, um seletor de classe dentro de CSS externo tem um valor de especificidade de (0, 0, 1, 0).
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="text">This text's color is defined in an external CSS file.</div>
</body>
.text {
color: purple;
}
Neste exemplo, a cor do texto é definida no arquivo styles.css e será aplicada a menos que seja substituída por um seletor mais específico ou um estilo inline.Este módulo não possui perguntas. Marque como concluído.