Pseudoclasses, Pseudoelements i Combinadors
Aquest capítol explora selectores avançats que et permeten controlar l'estil dels elements HTML segons el seu estat, posició o relació amb altres elements.
Pseudoclasses
Les pseudoclasses permeten seleccionar elements en certs estats o condicions. Es defineixen amb :
després d’un selector.
Selectores de comportament
a:hover {
color: green;
}
a:active {
color: red;
}
a:link {
color: blue;
}
a:visited {
color: orange;
}
Selectores de posició
li:first-child {
font-weight: bold;
}
li:last-child {
font-weight: bold;
}
li:nth-child(3) {
font-weight: bold;
}
li:nth-child(odd) {
font-weight: bold;
}
li:nth-child(even) {
font-weight: bold;
}
li:nth-child(5n) {
font-weight: bold;
}
Diferències entre :nth-child()
i :nth-of-type()
li:nth-child(2n) {
font-weight: bold;
}
li:nth-of-type(2n) {
color: blue;
}
Altres pseudoclasses útils
:not(p) {
font-weight: bold;
}
p:not(.mi-classe) {
font-weight: bold;
}
div:empty {
background: green;
height: 10px;
}
input:required {
background-color: pink;
}
input:disabled {
opacity: 0.5;
}
input[type="text"]:valid {
background-color: lightgreen;
}
input[type="email"]:invalid {
background-color: red;
}
Pseudoelements
Els pseudoelements permeten seleccionar i estilar parts específiques d’un element. S’escriuen amb ::
.
Exemples comuns
p::before {
content: "«";
}
p::after {
content: "»";
}
p::first-line {
text-transform: uppercase;
}
p::first-letter {
font-size: 30px;
color: red;
}
p::selection {
background-color: orange;
color: black;
}
Combinadors
Els combinadors permeten seleccionar elements basats en la seva relació amb altres elements.
Descendent (espai
)
Selecciona qualsevol element dins d’un altre.
main h1 {
background-color: yellow;
color: black;
}
Fill directe (>
)
Només selecciona fills directes.
section > h1 {
background-color: yellow;
}
Germà adjacent (+
)
Selecciona l’element immediat següent.
h1 + ul {
background-color: green;
}
Germans generals (~
)
Selecciona tots els germans posteriors.
h1 ~ p {
background-color: aqua;
}
Aquest mòdul et dona les eines per fer CSS molt més específic, modular i potent. Dominar les pseudoclasses, pseudoelements i combinadors et permetrà adaptar l'estil de forma precisa segons l'estructura i l'estat dels elements.