nav
, em
… .
) suivi du nom de la classe.
Exemples :
.info-complementaire
, .photo
… #
) suivi du nom de l'identifiant.
Exemples :
#pied-de-page
, #item-actif
… h1,p,.toto
sélectionne les éléments de type
h1
, les éléments de type h2
,
et les éléments de classe toto
.
.toto p
sélectionne les paragraphes dont au moins un parent est de
classe toto
.
Une façon de combiner les sélecteurs que l'on n'a pas encore vue est la conjonction (qui correspond à l'opérateur logique « et »)
Permet de sélectionner des éléments qui doivent satisfaire plusieurs sélecteurs à la fois
Pour obtenir cette combinaison, il suffit de regrouper les sélecteurs ensemble, sans espaces
Ex:
img#toto.intro
sélectionne les éléments de type img
ayant l'identifiant toto
et la classe intro
.
span.operation { font-weight: bold; } aside.operation { border: 2px solid black; float: right; }
aside
par un autre élément,
on casse tout alors que les classes ne servent que pour le CSS, pas de raison de les changer<div class="foo bar">je suis de classe foo et de classe bar!</div>⇒ on sépare les classes par des espaces dans l'attribut
class
.foo { color: yellow; } .bar { border: solid 4px red; }l'élément sera en jaune avec une bordure rouge.
.foo.bar { border-style: dashed; }Peut être utile, mais pas évident à maintenir : en général on essaie plutôt d'éviter que les classes dépendent les unes des autres.
id
et class
id
pour les propriétés uniques d'un élémentclass
pour des propriétés partagées (ou s'il y a une sémantique derrière la présentation)#menu1
et #menu2
),
de style identique, sauf que l'un est en bleu et l'autre en rouge.menu
, pour ce qui est commun, et
on utilise les identifiants pour changer simplement les couleurs.menu a
pour styler les liens des menus lienMenu
#leftMenu a
et #rightMenu a
[id="toto"]
plutôt que #toto
, on vise le même élément mais
avec une spécificité moindre!important
. Ne pas le faire dans du vrai code :
ça complique (encore plus) le débogage et la maintenance. Ça peut être utile pour tester ou déboguer
(ou dans les cas où on doit ajouter des styles par-dessus du CSS qu'on ne contrôle pas).Parfois on a spécifié une propriété CSS pour un cas général, et on a besoin de l'« annuler » pour un cas particulier
Cela arrive notamment avec les media queries
On peut utiliser les valeurs spéciales initial
, inherit
et surtout unset
initial
revient à la valeur « par défaut » de la propriété : par exemple pour color
, c'est black
inherit
force à hériter de la valeur du parent : typiquement plus approprié justement pour color
, mais pas pour d'autres
unset
remet la propriété dans l'état où elle aurait été si on n'avait rien modifié. Pour color
, ça reviendra à faire inherit
,
mais pour background
ça reviendra à faire initial
De façon générale, il vaut mieux toujours utiliser unset
, sauf si vous savez vraiment ce que vous faites ou si le résultat ne vous convient pas…
#entete .menu ul li a
.menu a
(on sélectionne les liens du menu).
S'il y a plusieurs sortes de liens dans le menu, alors il vaut mieux leur donner des classes distinctes.<link rel="stylesheet">
dans le head
@import
…
@import url("mystyle.css");
pour importer une CSS@import
: empêche le téléchargement des CSS en parallèle, ce qui bloque le rendu<link rel="stylesheet">
dans le HTML :
les fichiers peuvent être chargés en parallèle.parler des valeurs par défaut : initial, inherit, et surtout unset ; voir aussi revert (pas encore très supporté)
il y a aussi la propriété all.
https://www.w3.org/TR/css-cascade-4/