a { color: forestgreen; text-decoration: none; }
Elles sont en fait bien plus puissantes que ça !
La partie avant les accolades (ici a
) est un sélecteur, en l'occurrence un sélecteur de type
h1, h2, h3 { color: red; }
On va voir maintenant d'autres sélecteurs de base
strong
dans les titres,
on ne voit pas la différence dans le résultatSupposons alors qu'on voudrait mettre les strong
en couleur dans les titres (mais pas ailleurs)
Solution : la combinaison de sélecteurs permet de sélectionner des « éléments qui sont dans des éléments »
h2 strong {
color: tomato;
}
⇒ sélectionne tous les éléments strong
qui ont un ancêtre de type h2
N.B. : la règle est appliquée aux éléments sélectionnés par le dernier sélecteur de la combinaison
Attention : ici le caractère « espace » est très important, contrairement à (quasiment) partout ailleurs en CSS ! Ce choix de syntaxe est contre-intuitif à tous les niveaux !
h1 strong, h2 strong, h3 strong {
color: tomato;
}
HTML définit un certain nombre d'éléments ayant une sémantique précise…
… mais ça ne suffit évidemment pas à couvrir tous les besoins !
Pour définir une sémantique soi-même, on utilise une classe
class
:
<h1>Un texte intéressant</h1>
<p class="intro">Dans ce texte, on va parler de bla bla bla</p>
<p>Bla bla bla bla</p>
Intérêt : on peut sélectionner tous les éléments ayant une certaine classe
.intro { font-weight: bold; }
La règle sera appliquée à tous les éléments ayant la classe intro
.
Les classes permettent en quelque sorte de définir ses propres éléments HTML
On peut ajouter une classe à un élément existant, mais ça n'a pas toujours du sens
div
span
<p>
L'<span class="operation">addition</span> est une opération très utile.
</p>
<div class="exemple">
Quand on fait ses courses, l'<span class="operation">addition</span>
permet de savoir combien on va payer à la fin. Si on est plusieurs à payer,
il faudra aussi utiliser la <span class="operation">division</span>.
</div>
.operation {
font-weight: bold;
}
.exemple {
background-color: aquamarine;
}
On voudrait que les noms d'opération soient en bleu foncé dans les exemples.operation-dans-exemple
, mais on retrouve les inconvénients déjà cités :
Ce qu'on veut, c'est simplement sélectionner les « opérations » qui sont dans des « exemples »…
Pour sélectionner les « opérations » qui sont dans des « exemples », la structure du HTML suffit : pas besoin d'informations en plus
CSS permet d'exploiter cette structure grâce à la combinaison de sélecteurs vue plus haut
.exemple .operation {
color: darkgreen;
}
⇒ sélectionne tous les éléments de classe operation
qui ont un ancêtre de classe exemple
Encore une fois, la règle est appliquée aux éléments sélectionnés par le dernier sélecteur de la combinaison
Les classes permettent de définir ses propres « catégories » d'éléments, et leur associer des styles…
… mais parfois on veut donner un style à un élément particulier, sans définir de sémantique
id
:
<p>Des films :</p>
<ul>
<li id="pulpfiction">Pulp Fiction</li>
<li id="grandevadrouille">La grande vadrouille</li>
<li id="dracula">Dracula</li>
</ul>
Il ne doit pas y avoir plusieurs éléments avec le même identifiant sur une même page : l'identifiant doit être unique
http://example.com/page.html#pulpfiction
#
»
#pulpfiction { color: purple; } #grandevadrouille { color: brown; } #dracula { color: red; }
Rien n'empêche d'utiliser des classes ici, mais le code fait apparaître plus clairement qu'on applique des styles pour des éléments particuliers, pas des styles généraux
Les classes sont censées avoir un sens (ex. auteur, important…), pas juste servir de raccourci à des propriétés CSS (ex. rouge, gras…)
Le code HTML doit rester sémantique : attention à ne pas multiplier
les div
et les classes ne servant qu'à styler