La counter-set
propriété CSS, fidèle à son nom, définit la valeur de départ d'un compteur CSS. Vous savez comment les listes ordonnées commencent à 1 puis augmentent à partir de là? La counter-set
propriété nous permet de définir cette valeur de départ sur autre chose, disons -1. Ou 2. Ou 200! Sauf qu'il s'applique aux compteurs CSS au lieu des listes ordonnées.
Donc, disons que nous avons un compteur personnalisé pour une liste de chapitres de livre, où le numéro de chapitre est précédé du nom du chapitre.
![](1835462/counter-set_css-tricks_2.png.webp)
![](1835462/counter-set_css-tricks_2.png.webp)
Nous commencerions par définir un compteur avec la counter-reset
propriété. Nous l' appellerons chapter
et définir sur une classe de conteneur parent pour nos chapitres appelés, de façon créative, .chapters
.
.chapters ( counter-reset: chapter; )
Ensuite, nous affecterions le chapter
compteur à un élément en utilisant la counter-increment
propriété. Comme il s'agit de chapitres de livres, nous les appliquerons à
éléments, en supposant que le titre du livre serait le
. Notez que nous l'attribuons en fait au :before
pseudo-élément car il nous permet de préfixer notre compteur au réel
élément.
h2:before ( counter-increment: chapter; )
h2:before ( counter-increment: chapter; )
Cool, la dernière chose dont nous aurions besoin est de dire au compteur ce qu'il doit afficher. Cela se fait sur la content
propriété via la counter()
fonction. Nous jetterons également un peu de couleur sur le comptoir puisque le design l'exige.
h2:before ( color: red; content: "Chapter " counter(chapter) ": "; counter-increment: chapter; )
Hé, nous avons l'air bien!
Mais attendez! Je ne suis pas vraiment en train de creuser le fait que nous commençons au chapitre 1. Je veux dire, le "Forward" n'est pas vraiment un chapitre. Si quelque chose, c'est comme le chapitre 0.
C'est là counter-set
qu'intervient! Mettons les choses à zéro:
h2:first-of-type::before ( counter-set: chapter; )
On y va! C'est mieux. En définissant simplement la valeur de la propriété sur le nom du compteur, nous avons défini la liste des chapitres pour qu'elle commence au chapitre 0. Nous aurions pu tout aussi bien la définir à partir de quelque chose d'autre, comme le chapitre 100.
Et si un navigateur ne prend pas en charge counter-set
? Rien, vraiment. Il sera tout simplement ignoré et la liste commencera à sa valeur par défaut, 1
.
Syntaxe
( ? )+ | none
C'est fondamentalement une manière sophistiquée de dire que la propriété prend le nom d'un compteur personnalisé ( ) et la valeur de départ (
). Ou réglez - le
none
et la numérotation commence au point de départ par défaut, 1
.
- Valeur initiale:
none
- S'applique à: tous les éléments (y compris les éléments non visuels)
- Héritée: non
- Type d'animation: par type de valeur calculée
Valeurs
/* Set "awesome-counter" to 0 */ counter-set: awesome-counter; /* Set "awesome-counter" to -10 */ counter-set: awesome-counter -10; /* Set "awesome1" to 0, and "awesome2" to 2 */ counter-set: awesome1 awesome2 2; /* Wipe out any other settings that may have been declared elsewhere */ counter-set: none; /* Global values */ counter-set: inherit; counter-set: initial; counter-set: unset;
Notez que counter-set
cela créera un nouveau compteur si le nom du compteur déclaré dessus n'a pas déjà été défini ailleurs.
Prise en charge du navigateur
C'EST À DIRE | Bord | Firefox | Chrome | Safari | Opéra |
---|---|---|---|---|---|
Non | Non | 68+ | Non | Non | Non |
Chrome Android | Android Firefox | Navigateur Android | Safari sur iOS | Opera Mini |
---|---|---|---|---|
Non | 79+ | Non | Non | Non |
Lectures complémentaires
- Spécification de niveau 3 du module Listes CSS (version provisoire)
- Affichage de l'étape actuelle avec des compteurs CSS
- Compter avec les compteurs CSS et la grille
- Comment inverser les compteurs personnalisés CSS