Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Ceci est une ancienne révision du document !


Numérotation automatique des titres par CSS

Il s'agit de créer un fichier CSS qui numérotera automatiquement les titres.

Contraintes :

h1 est réservé au titre de la page - il ne doit donc pas être numéroté. Le premier titre à numéroter est donc le premier élément h2.

Il est parfois utile d'inclure un titre sans numérotation, il faut donc pouvoir la désactiver.

La méthode habituelle consiste à définir une classe nocount.

Exemple :

  • voici un h3 qui n'incrémente pas le compteur :
    <h3 id="nocountDemo" class="nocount">Ce titre n'a pas de numéro</h3>
  • et pour relancer la numérotation :
    <h3 id="countAgain">Ce titre a un numéro</h3>

    La numérotation reprend là où elle s'est arrêtée.

c'est autre chose. Il ne s'agit que des numéros.

Le CSS

Et voici le CSS :

body {counter-reset: h2}
h2 {counter-reset: h3}
h3 {counter-reset: h4}
h4 {counter-reset: h5}
h5 {counter-reset: h6}

h2:before {counter-increment: h2; content: counter(h2) ". "}
h3:before {counter-increment: h3; content: counter(h2) "." counter(h3) ". "}
h4:before {counter-increment: h4; content: counter(h2) "." counter(h3) "." counter(h4) ". "}
h5:before {counter-increment: h5; content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "}
h6:before {counter-increment: h6; content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". "}

h2.nocount:before, h3.nocount:before, h4.nocount:before, h5.nocount:before, h6.nocount:before { content: ""; counter-increment: none }

David Storey donne une bonne explication satisfaisante dans son article intitulé Automatic numbering with CSS Counters (numérotation automatique à l'aide de compteurs CSS).

En gros, vous définissez d'abord vos compteurs (en les réinitialisant), puis vous les incrémentez et les insérez au contenu généré en utilisant la pseudo-classe :before

Surveillez la cascade !

Pour utiliser le moins de lignes de CSS possible, j'ai d'abord essayé cela :

h2 {counter-reset:h2; counter-reset:h3; counter-reset:h4; counter-reset:h5; counter-reset:h6;}

Pourquoi cela ne fonctionne-t-il pas ? C'est le C dans CSS - la cascade. Vous produisez une série de valeurs différentes pour la même propriété et chacune d'entre elles remplace l'autre, de sorte qu'en fait, ici, le seul compteur remis à zéro est le dernier.

Pré-requis

Installation

Configuration

Utilisation

Désinstallation

Voir aussi