Savoir comment utiliser les sélecteurs CSS 2.1
et les nouveautés CSS 3
Date de publication : 07/07/2009
Par
Julien (Kiwano, Référencement Marseille)
Les sélecteurs CSS sont certainement un des aspects les plus puissants en
CSS. Ils permettent de cibler un élément spécifique du balisage HTML pour
lui affecter un style. Les sélecteurs CSS sont variés, allant du simple
nom d'un élément jusqu'à une expression de sélection riche d'une liste
d'éléments HTML. Cet article vous fait un rappel sur les possibilités des
sélecteurs CSS et vous présente les nouveautés CSS 3 qui s'avèrent très
puissantes pour éviter des id, classes ou JavaScript non nécessaires.
Sélecteur CSS 2.1
I-A. Syntaxe des sélecteurs
I-B. Sélecteur universel
I-C. Sélecteur de type
I-D. Sélecteur descendant
I-E. Sélecteur d'enfant
I-F. Sélecteur d'enfant adjacent
I-G. Sélecteur d'attribut
I-G-1. [att]
I-G-2. [att=val]
I-G-3. [att~=val]
I-G-4. [att|=val]
I-H. Sélecteur de classe
I-I. Sélecteur d'ID
I-J. Pseudo-éléments et pseudo-classes
I-J-1. La pseudo-classe :first-child
I-J-2. Les pseudo-classes d'ancre :link et :visited
I-J-3. Les pseudo-classes dynamiques :hover, :active et :focus
I-J-4. La pseudo-classe de langue :lang
I-J-5. Le pseudo-élément :first-line
I-J-6. Le pseudo-élément :first-letter
I-J-7. Les pseudo-éléments :before et :after
Nouveautés CSS 3 sur les sélecteurs
II-A. Sélecteur d'attribut
II-B. Combinateur d'adjacence indirecte
II-C. Pseudo-classes
II-C-1. La pseudo-classe :nth-child()
II-C-2. La pseudo-classe :nth-last-child()
II-C-3. La pseudo-classe :last-child
II-C-4. La pseudo-classe :checked
II-C-5. La pseudo-classe :empty
II-C-6. La pseudo-classe de negation
II-D. Pseudo-élément
II-D-1. Les pseudo-éléments fragments d'éléments d'interface
Pour en savoir plus
Sélecteur CSS 2.1
I-A. Syntaxe des sélecteurs
Les sélecteurs peuvent être de type simple (cas du sélecteur
universel), de type sélecteurs d'attributs ou encore de type
sélecteurs d'id.
Les sélecteurs de type simple peuvent être combinés à l'aide
de caractères spéciaux comme un espace, un "+" ou un ">".
Enfin on peut combiner les sélecteurs dans une liste quand on
veut appliquer un même style aux éléments ciblés par plusieurs
sélecteurs.
h1 { color: red; }
h2 { color: red; }
h1, h2 { color: red; }
|
I-B. Sélecteur universel
Le sélecteur universel correspond au caractère "*", il représente
l'ensemble des éléments de l'arbre HTML et peut être omis.
I-C. Sélecteur de type
Un sélecteur de type correspond au nom de l'élément HTML. Il
permet d'appliquer un style à tous les éléments de ce type dans
le document HTML. La règle suivante concerne tous les éléments
h1.
h1 { font-family: sans-serif; }
|
I-D. Sélecteur descendant
Un sélecteur descendant permet de cibler les éléments enfants
d'un autre élément.
L'exemple suivant appliquera une couleur jaune au texte de
tous les éléments strong contenus dans un paragraphe.
p strong { color: yellow; }
|
I-E. Sélecteur d'enfant
Un sélecteur d'enfant est utilisé pour vérifier qu'un élément
est un enfant d'un autre élément. Pour utiliser le sélecteur
d'enfant on utilise le caractère ">" avec à gauche le parent
et à droite l'enfant.
L'exemple suivant appliquera un fond bleu aux éléments strong
enfants d'un paragraphe.
p > strong { background-color: blue; }
|
La différence entre le sélecteur d'enfant et le sélecteur
descendant est que le sélecteur descendant correspond aux
éléments strong où qu'ils soient dans le paragraphe,
alors que le sélecteur d'enfant est plus spécifique et correspond
uniquement aux éléments strong qui sont enfants du paragraphe.
Dans l'exemple suivant :
<p>Martin dit :
<q>super site sur le référencement naturel à <strong>Marseille</strong></q>,
en plus il connaissait bien les sujets <strong>SEO</strong>!
</p>
|
Le code sélecteur descendant précédent mettra en jaune les
deux textes entre les balises strong alors que le code sélecteur
d'enfant précédent appliquera un fond bleu uniquement au 2e
strong soit le mot SEO car seulement cet élément est un enfant
du paragraphe. L'élément strong Marseille est un enfant de
la citation q.
 |
Les sélecteurs d'enfants ne sont pas supportés par IE6.
|
I-F. Sélecteur d'enfant adjacent
Les enfants adjacents sont les éléments qui suivent immédiatement
un autre élément qui partage le même parent. On utilise le signe
"+" pour les enfants adjacents.
L'exemple suivant appliquera un fond vert à tous les éléments
h2 qui suivent immédiatement un élément h1 si
ses éléments partagent le même parent.
h1 + h2 { background-color: green; }
|
 |
Les sélecteurs d'enfants adjacents ne sont pas supportés par IE6.
|
I-G. Sélecteur d'attribut
Les sélecteurs d'attribut correspondent aux éléments qui ont
des attributs définis dans l'arbre HTML. Il y a 4 types de
sélécteurs d'attribut.
I-G-1. [att]
Le sélecteur d'attribut basique correspond aux éléments
qui ont l'attribut spécifié indépendamment de la valeur
de l'attribut.
L'exemple suivant appliquera un fond rouge à tous les
liens qui possèdent un attribut title.
a[title] { background-color: red; }
|
I-G-2. [att=val]
Ce sélecteur d'attribut est utilisé pour sélectionner les
éléments qui contiennent un attribut spécifique avec une
valeur particulière.
L'exemple suivant appliquera un fond rouge à tous les liens
qui possèdent un attribut rel avec la valeur external.
a[rel=external] { background-color: red; }
|
I-G-3. [att~=val]
Certains attributs autorisent une liste de valeurs séparées
par des espaces. En utilisant le "~" avant le caractère "=",
vous pouvez positionner un style sur les éléments qui
possèdent un attribut spécifique avec une valeur particulière
présente dans la liste des valeurs.
L'exemple suivant appliquera un fond rouge à tous les
paragraphes qui contiennent la classe attention.
p[class~=marseille] { background-color: red; }
|
I-G-4. [att|=val]
Ce sélecteur d'attribut est utilisé pour sélectionner les
éléments qui possèdent un attribut spécifique et dont la
valeur est une liste de mots séparés par des tirets et
commençant par val.
L'exemple suivant appliquera le style sur les liens avec
un hreflang dont la valeur commence par "en", incluant
"en-US", "en-GB", etc.
a[hreflang|=en] { background-color: red; }
|
Plusieurs sélecteurs d'attributs peuvent être utilisés
dans la même instruction.
L'exemple suivant utilise 2 sélecteurs d'attribut pour
appliquer un fond rouge à tous les liens qui ont un attribut
title et dont l'attribut rel à la valeur external.
a[title][rel~=external] { background-color: red; }
|
I-H. Sélecteur de classe
Comme vu précédemment, on utilise le caractère "." comme
sélecteur de classe.
Le sélecteur suivant représente un élément h1 portant la
class "referenceur".
I-I. Sélecteur d'ID
Le sélecteur d'ID correspond au caractère "#". Dans l'exemple
suivant, le sélecteur d'ID représente un élément h1 dont
l'attribut id a la valeur "referencement".
I-J. Pseudo-éléments et pseudo-classes
Les sélecteurs de pseudo-classes et de pseudo-éléments sont
utilisés dans les scénarios où sélectionner la position de
l'élément dans l'arbre HTML n'est pas suffisant. Pour utiliser
les pseudo-classes et les pseudo-éléments on utilise le
caractère ":".
I-J-1. La pseudo-classe :first-child
La pseudo-classe :first-child correspond au premier élément
enfant d'un autre élément.
div > p:first-child { text-indent: 0; }
|
I-J-2. Les pseudo-classes d'ancre :link et :visited
La pseudo-classe :link s'applique aux liens qui n'ont
pas été visités et la pseudo-classe :visited s'applique
lorsque le lien a été visité par l'utilisateur.
I-J-3. Les pseudo-classes dynamiques :hover, :active et :focus
Les pseudo-classes dynamiques appliquent un changement de
style en fonction d'une action utilisateur. La pseudo-classe
:hover applique un style quand l'utilisateur désigne un
élément (par exemple au survol de la souris), la pseudo-classe
:active applique un style quand l'utilisateur active un
élément (par exemple au moment où l'utilisateur presse le
bouton de la souris et le relâche) et la pseudo-classe
:focus applique un style quand un élément reçoit l'attention
(par exemple quand l'utilisateur se positionne sur l'élément
à l'aide du clavier).
a:link { color: red }
a:visited { color: blue }
a:hover { color: yellow }
a:active { color: lime }
|
I-J-4. La pseudo-classe de langue :lang
La pseudo-classe :lang permet de cibler un élément dont
la langue correspond à une certaine valeur.
p:lang(en) { background-color: red; }
|
I-J-5. Le pseudo-élément :first-line
Le pseudo-élément :first-line associé à un paragraphe
produit un style particulier sur la première ligne formatée
d'un paragraphe.
p:first-line { text-transform: uppercase; }
|
I-J-6. Le pseudo-élément :first-letter
Le pseudo-élément :first-letter peut être employé pour
faire des capitales initiales et des lettrines.
I-J-7. Les pseudo-éléments :before et :after
Les pseudo-élément :before et :after servent à insérer
un contenu généré avant ou après celui d'un élément.
Nouveautés CSS 3 sur les sélecteurs
II-A. Sélecteur d'attribut
3 nouveaux sélecteurs d'attribut sont introduits par la norme CSS 3 :
- [att^="val"] : Représente un attribut dont la valeur commence exactement par le préfixe "val".
- [att$=ident] : Représente un attribut dont la valeur finit exactement par le suffixe "ident".
- [att*="val"] : Représente un attribut dont la valeur contient au moins une fois la sous-chaîne "val".
Le seul navigateur qui ne supporte pas les sélecteurs d'attribut
CSS3 est IE6. IE7, IE8, Opera et les navigateurs basés les
moteurs Webkit (Safari et Chrome) et Gecko (Firefox) supportent
ces sélecteurs.
II-B. Combinateur d'adjacence indirecte
Les combinateurs d'adjacence indirecte sont composés du caractère
"~" séparant deux séquences de sélecteurs simples.
L'exemple suivant permet d'ajouter une bordure grise à toutes
les images qui suivent une div particulière (l'image et la div
doivent avoir le même parent).
div~img { border: 1px solid #ccc; }
|
Tous les navigateurs supportent le combinateur d'adjacence
indirecte sauf votre navigateur favori : Internet Explorer 6.
II-C. Pseudo-classes
Contient les plus grosses nouveautés de la norme CSS 3.
II-C-1. La pseudo-classe :nth-child()
Ce sélecteur vous permet de cibler les éléments en se
basant sur leur position dans la liste des enfants de
leur parent. Vous pouvez utiliser un numéro, une
expression numérique ou les mots "odd" et "even"
correspondant à impair et pair (parfait pour faire un
style alternatif pour vos tableaux).
tr:nth-child(2n+1)
tr:nth-child(odd)
|
II-C-2. La pseudo-classe :nth-last-child()
Ce sélecteur ressemble beaucoup au sélecteur précédent
sauf qu'il correspond au dernier enfant d'un élément parent.
II-C-3. La pseudo-classe :last-child
Identique à :nth-last-child(1). La pseudo-classe
:last-child représente un élément qui est le dernier
fils d'un autre élément.
II-C-4. La pseudo-classe :checked
Correspond aux éléments qui sont cochés.
II-C-5. La pseudo-classe :empty
Correspond aux éléments qui n'ont pas d'enfants ou qui sont vides.
II-C-6. La pseudo-classe de negation
La pseudo-classe de négation est une notation fonctionnelle
prenant un sélecteur simple pour argument. Elle représente
un élément qui n'est pas représenté par l'argument.
L'exemple ci-dessous permet d'afficher le texte des paragraphes
qui n'ont pas la classe "lead" en noir.
p:not([class*="lead"]) { color: black; }
|
Les navigateurs basés sur le moteur Webkit ou Opera
supportent toutes les nouveautés CSS 3 des sélecteurs de
pseudo-classe. Firefox 2 et 3 supporte uniquement :not(s),
:last-child, :only-child, :root,
:empty, :target, :checked,
:enabled et :disabled, mais Firefox 3.5 aura un support
complet des sélecteurs CSS 3. Internet Explorer n'a actuellement
aucun support de ces pseudo-classes.
II-D. Pseudo-élément
II-D-1. Les pseudo-éléments fragments d'éléments d'interface
Le nouveau pseudo-élément ::selection s'applique à la
portion du document qui a été mise en exergue par l'utilisateur.
L'exemple suivant permet de modifier la couleur de fond
du texte en cours de sélection.
::selection { background-color: blue; }
|
Pour en savoir plus


Copyright © 2009 Julien - Kiwano, Référencement Marseille. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 €
de dommages et intérêts.
Cette page est déposée.