div
),
ce qui n'est pas très propre (le HTML doit rester sémantique)nav a
: tout élément a
descendant d'un élément nav
nav > a
: tout élément a
fils direct d'un élément nav
<nav>
Liste de liens :
<ul>
<li><a href="">un lien dans la liste</a></li>
<li><a href="">un autre lien dans la liste</a></li>
</ul>
On peut aussi cliquer sur <a href="">ce lien-ci</a>
ou <a href="">celui-là</a>, mais ils ne sont pas dans la liste.
</nav>
nav a { color: tomato; } nav > a { font-weight: bold; }
+
h2 + p
: tout élément p
suivant immédiatement un élément h2
~
h2 ~ p
: tout élément p
suivant un élément h2
(mais pas forcément immédiatement)<ul>
<li>un item</li>
<li class="toto">
un item de classe <code>toto</code>
</li>
<li>un autre item</li>
<li>un autre item</li>
<li>un dernier item</li>
</ul>
<p>Une deuxième liste :</p>
<ul>
<li>avec un item</li>
<li>et un autre</li>
</ul>
.toto + li { color: forestgreen; font-weight: bold; } .toto ~ li { background-color: gold; }
toto
Une deuxième liste :
Attention, dans les deux cas, les deux éléments doivent avoir le même parent !
Dans l'exemple, les li
de la deuxième liste ne sont pas colorés.
a:hover { color: black; background-color: red; }
:hover
est une pseudo-classe : c'est comme si le navigateur
ajoutait en direct une classe spéciale à un lien qui est en train d'être survoléa:link { color: green; } /* par défaut */ a:visited { color: orange; } /* déjà visité */ a:hover { color: black; background-color: red; } /* pendant le survol */ a:focus { color: #aaa; font-size: 150%; } /* focus clavier */ a:active { color: yellow; } /* pendant le clic */
:visited
sont très limitées (essentiellement les couleurs et rien d'autre), pour des raisons de respect de la vie privée
<p>Passer la souris sur cette phrase</p>
<input type="text" value="Mettre le curseur ici" />
<p>Cliquer sur le mot en gras : <strong>dimétrodon</strong></p>
p:hover { background-color: aquamarine; } input:focus { background-color: tomato; } strong:active { background-color: gold; }
Passer la souris sur cette phrase
Cliquer sur le mot en gras : dimétrodon
:hover
est extrêmement utile pour rendre les pages un peu plus interactives
.sombre
et .clair
):nth-child(odd)
sélectionne les éléments de rang impair, :nth-child(even)
sélectionne les éléments de rang pair:nth-child
peut ne pas être intuitif :
img:nth-child(odd)
ne sélectionne pas une image sur deux, mais tous les éléments qui sont des fils impairs et aussi des images !img:nth-of-type(odd)
ou img:nth-of-type(even)
:nth-of-type(odd)
sélectionne un élément s'il est de rang impair dans la liste des fils de même type de son parent:first-child
sélectionne les éléments qui sont le premier fils
de leur parent:last-child
sélectionne les éléments qui sont le dernier fils
de leur parent:first-of-type
, :last-of-type
premier ou dernier fils d'un type donné::first-line
: pseudo-élément qui sélectionne
la première ligne de texte d'un élément::first-letter
: pseudo-élément qui sélectionne la première lettre d'un élément:
(comme pour les pseudo-classes).#toto:hover
sélectionne toto
(s'il est survolé), mais#toto::first-line
ne sélectionne pas toto
, mais un (pseudo-)fils.:first-child
(pseudo-classe) et ::first-line
(pseudo-élément) !
::before
, ::after
permettent d'insérer du contenu au
début ou à la fin d'un élément,
grâce à la propriété content
#toto::after { content: "je suis le dernier"; }ajoute un fils à l'élément d'identifiant
toto
, qui contient le texte
je suis le dernier
, et qui est situé après tous les fils de toto
.
content
. Exemple :
#toto::after { content: url('logo.png'); }