les sélecteurs :is() et :where()
decouvrez :is()
l'alter ego de :not()
,et :where()
où la différence réside dans le calcul de la priorité des sélécteurs compilés.
Les selecteurs contenus dans :is(), :not()
sont pris en compte dans le calcul de priorité, il ne le sont pas dans :where()
.
Aujourd'hui, nous sommes trés prés de pouvoir les utiliser sans réserves.
Garder un oeil sur Caniuse.com pour voir où en est le support, sans oublié la définition.
Un exemple concret
Une structure HTML courante.
Pour une règle commune aux enfants directs de body, 1 seul sélecteur (où plusieurs sont regroupés entre parenthéses) se suffit.
body > :is(header, main, aside, footer) {
margin:1em;
border:solid 1px
}
body > header,
body > main,
body > aside,
body > footer {
margin:1em;
border:solid 1px
}
Un autre exemple pratique sur un menu:nav a:is(:hover,:focus,.active) {color:orange}
Notez la class
inclus dans la liste avec les pseudos class.
nav a:is(:hover, :focus, .active) {
color: orange;
}
nav {
display: flex;
width: max-content;
margin: auto;
}
nav a {
border: 1px solid;
text-decoration: none;
margin: 0 0.5ch;
padding: 0.2ch 1ch;
}
a:hover, a:focus {
background: gray;
}