home home2 home3 newspaper pencil quill image camera headphones music play film connection book books cart coin-dollar coin-euro coin-pound coin-yen credit-card lifebuoy phone phone-hang-up envelop pushpin location location2 printer display laptop mobile mobile2 tablet tv download upload user users user-plus user-minus user-check user-tie quotes-left quotes-right spinner search zoom-in zoom-out lock unlocked wrench cog cogs pie-chart stats-dots stats-bars trophy gift hammer2 bin switch eye star-empty star-full heart plus minus checkmark play3 share2 google-plus2 google-plus3 facebook2 instagram twitter rss2 youtube youtube2 wordpress joomla tux appleinc windows skype paypal

En voici leur description accompagné à chaque fois d'un exemple d'utilisation.

Ces sélecteurs sont bien utiles, notamment pour modifier le look de CMS sur lequels vous ne voulez pas modifier le code source.


* (l'étoile)

Le symbole étoile est le sélecteur universel, il cible tous les éléments de la page.
Pratique pour mettre à zéro les marges de tous les éléments par exemple.

*  {
    margin: 0;
}


#X (le dièse, l'ID)

Le sélecteur # permet de cibler un élément par son identifiant. Condition : l'identifiant doit être unique, en d'autres termes, plusieurs éléments ne peuvent avoir le même identifiant sur une même page.

#menu  {
    width: 960px;
    margin: 10px auto;
}


.X (le point, la classe)

Le point est le sélecteur de classe, il peut cibler plusieurs éléments (à la différence du sélecteur d'ID).

.bleu  {
    color: #337ab7;
}


X (le type)

Le sélecteur de type permet de cibler un élément grâce à son type.

body  {
    color: #333;
}
h1  {
    font-size: 36px;
    font-weight: 500;
    line-height: 1.1;
}


:hover (deux-points hover)

Le sélecteur :hover permet d'appliquer un style lorsque l'utilisateur survole un élément.

.bouton:hover  {
    background-color: #4e74c2;
    color: #fff;
}


:not(sélecteur)

La pseudo-classe de négation permet de sélectionner tous les types mentionnés sauf ceux pointés par le sélecteur.

p:not(.secondaire)  {
    text-decoration: underline;
}

Dans cet exemple les paragraphes auxquels ne sont pas attribués la classe "secondaire" seront soulignés.


X Y (sélecteur descendant)

le sélecteur descendant permet d'être plus spécifique.

li a  {
    text-decoration: none;
}

Dans cet exemple seuls les liens compris dans une liste seront soulignés.


X > Y (sélecteur d'enfant)

le sélecteur d'enfant cible seulement le descendant direct

div#menu > ul  {
    border: 1px solid #333;
}

Dans cet exemple seuls les éléments ul de premier niveau, descendants direct du div#menu auront une bordure.


X + Y (sélecteur adjacent direct)

Le sélecteur adjacent direct cible tout élément Y immédiatement précédé par un élément X.

p + h2  {
    margin-top: 0;
}

Dans cet exemple seuls les titre de niveau 2 immédiatement précédés par un paragraphe n'auront pas de marge du dessus.


X ~ Y (sélecteur adjacent indirect)

Un peu similaire au précédent mais plus souple, ce sélecteur permet de cibler tous les éléments similaires Y précédés directement ou indirectement par un élément X.

h2 ~ ul  {
    margin-top: 10px;
}

Dans cet exemple ce sélecteur cible toutes les listes non ordonnées placées après un titre h2 (mais pas forcément juste après).



X:visited

La pseudo-classe :visited correspond à tous les liens qui ont été visités.

a:visited  {
    text-decoration: underline;
}


X[foo]

Cible tout élément X ayant un attribut foo.

span[title]  {
    border-bottom: 1px dotted #777;
    cursor: help;
}

Dans cet exemple tous les <span title="..."> seront soulignés (en pointillés) et le curseur de la souris prendra la forme d'un point d'interrogation.


X[Y="foo"]

Cible tout élément X ayant un attribut Y précis.

a[target="_blank"]  {
    border-right: 1px solid blue;
}

Dans cet exemple tous les liens ouvrant de nouvelles pages <a href="_blank" ...> seront stylisés avec une bordure droite bleue.


X[Y*="foo"]

On ajoute une étoile pour indiquer que "foo" doit se trouver quelque part dans la valeur de l'attribut Y.

a[href*="gnu"]  {
    font-weight: bold;
}

Dans cet exemple tous les liens vers gnu.org, forum.gnu.org, support.gnu.org etc. seront pris en compte et mis en gras.


X[Y^="foo"]

Comme pour les Regex, avec le symbole ^ circonflexe, on cible tous éléments X dont la valeur de l'attribut Y commence par "foo".

a[href^="http"]  {
    text-decoration: underline;
}

Dans cet exemple tous les liens commençant par http seront soulignés.


X[Y$="foo"]

Idem encore que pour les Regex, ici avec le $, on cible tous éléments X dont la valeur de l'attribut Y finit par "foo"

a[href$=".png"]  {
    margin-right: 5px;
}

Dans cet exemple tous les liens finissant par .png auront une marge à droite de 5px.


X[data-xyz="foo"]

Avec data- il est possible de créer ses propres attributs et pouvoir ainsi cibler spécifiquement un élément X.

Fausse Bonne Idée en HTML5 ? Cet article semble bien le prouver, car cette utilisation de data- donne à penser que les données ciblées sont d'une importance immédiate pour l'utilisateur (alors que ce ne serait là que pour donner du style). Utilisez-le donc en toute connaissance de cause et surtout si vous n'avez aucun autre moyen (plus sémantique) de cibler votre élément X.

a[data-info="video"]  {
    border-color: 1px solid green;
}

Un lien exprimé ainsi par exemple <a data-info="video" href="...">Voir la vidéo<a> sera entouré par une bordure verte.


X[foo~="un-truc"]

Avec cette utilisation, le symbole tilde ~ permet de cibler un élément dont l'attribut "foo" a pour valeur une liste de valeurs séparées par des espaces et dont une de celles-ci serait "un-truc".

a[data-exemple~="cinema"]  {
    border: 1px solid red;
}

Dans cet exemple ce lien <a href="affiche.png" data-exemple="teaser cinema">En savoir plus</a> aura une bordure rouge.
Mais idem que pour le sélecteur précédent, cela peut s'avérer une Fausse Bonne Idéee en HTML5.


X:checked

Cette pseudo-classe cible uniquement les éléments de formulaire qui ont été cochés, bouton radio ou case à cocher.

input[type=checkbox]:checked  {
    background-color: gray;
}

Ici les cases cochées d'un formulaires auront un fond gris.


X:before et X:after

Les pseudo-éléments before et after servent à générer en CSS du contenu esthétique voir textuel avant ou après l'élément ciblé. Il sont souvent utilisés avec la propriété CSS "content".

a[target=_blank]:after  {
    content: url("externe.png");
}

Ici en associant le sélecteur :after au sélecteur de l'attribut target=_blank, l'image "externe.png" sera ajoutée après tous les liens sortant.


p::first-line

Applique un style à la première ligne d'un paragraphe

p::first-line  {
    font-size: 1.3em;
}


p::first-letter

Applique un style à la première lettre d'un paragraphe

p::first-letter  {
    float: left;
    font-size: 2.2em;
    padding-right: 5px;
    font-weight: bold;
}

Ce pseudo-élément permet d'obtenir un effet lettrine d'éditorial de journal pour la première lettre d'un article.


X:nth-child(n)

Assez compliqué à expliquer clairement, ce pseudo-élément permet de cibler par exemple toutes les lignes impaires d'un tableau HTML.
Mais il peut aussi servir à beaucoup d'autres choses, comme à styliser des listes par exemple.

tr:nth-child(2n+1)  {
    background-color: #F7F7F7;
}


X:nth-last-child(n)

Ce pseudo-élément est très pratique pour cibler un élément particulier d'une liste pouvant avoir un nombre aléatoire d'éléments par exemple.

li:nth-last-child(2)  {
    text-decoration: underline;
}

Ici l'avant dernier élément des listes sera toujours souligné.


X:nth-of-type(n)

Cette pseudo-classe permet de cibler un ou plusieurs éléments en fonction de l'ordre d'origine selon une formule construite en utilisant la syntaxe an+b.

li:nth-of-type(3n+2)  {
    background: #ccc;
}

Dans cet exemple les éléments 2, 5, 8, 11, 14, 17... d'une liste auront un fond gris.

Plus simple

ul:nth-of-type(1)  {
    background: #ccc;
}

Dans cet exemple la 1ere liste d'éléments aura un fond gris.


X:first-child

Cette pseudo-classe permet de cibler le premier enfant de son parent.

ul li:first-child  {
    border-top: none;
}

Ici on désactive la bordure du haut du premier élément d'une liste.


X:last-child

Cette pseudo-classe permet de cibler le dernier enfant de son parent.

ul li:last-child  {
    border-bottom: none;
}

Ici on désactive la bordure du bas du dernier élément d'une liste.


X:only-child

Cette pseudo-classe permet de cibler les éléments qui sont enfants uniques de leur parent.

div p:only-child  {
    font-style: italic;
}

Dans cet exemple s'il n'existe qu'un seul paragraphe dans un div, alors il sera mis en italique.
S'il y en a plus d'un, tous les paragraphes resteront par défaut.


X:only-of-type

Permet de cibler tous les éléments sans aucun frère au sein de l'élément parent.

li:only-of-type  {
    font-weight: bold;
}

Ici seuls les éléments uniques d'une liste imbriquée seront mis en gras.


X:first-of-type

Cette pseudo-classe permet de cibler un élément qui est le premier enfant de son type dans la liste des enfants de l'élément parent. Il est similaire à nth-of-type(1).

p:first-of-type  {
    color: blue;
}

Ici chaque premier type d'élément compris dans un paragraphe sera bleu. Imaginons qu'il y ait plusieurs <em>, <strong> et <span>, chaque premier élément <em> <strong> <span> sera de couleur bleu, tous les autres resteront de la couleur par défaut.


Vous avez aimé cet article, partagez-le !

 
       

Logo des hirondelles du net

Quand je serai grand, je m'achèterai une classe, rien que pour jouer dedans

René Goscinny