J'ai une liste ordonnée où je voudrais que le nombre initial soit 6. J'ai trouvé qu'il s'agissait de supported (maintenant obsolète) en HTML 4.01. Dans cette spécification, ils disent que vous pouvez spécifier l'entier de départ en utilisant CSS. (au lieu de l'attribut start
)
Comment spécifiez-vous le numéro de départ avec CSS?
Si vous avez besoin de la fonctionnalité pour démarrer une liste ordonnée (OL) à un moment donné, vous devez spécifier votre type de document au format HTML 5; lequel est:
<!doctype html>
Avec ce doctype, il est valide de définir un attribut start
sur une liste ordonnée. Tel que:
<ol start="6">
<li>Lorem</li>
<li>Ipsum</li>
<li>Dolor</li>
</ol>
<ol start="">
n'est plus obsolète dans HTML5 , je continuerais donc à l'utiliser, peu importe ce que HTML4.01 dit.
start="number"
est nul car il ne change pas automatiquement en fonction de la numérotation qui le précède.
Une autre façon de faire qui pourrait répondre à des besoins plus complexes consiste à utiliser counter-reset
et counter-increment
.
Problème
Dis que tu voulais quelque chose comme ça:
1. Item one
2. Item two
Interruption from a <p> tag
3. Item three
4. Item four
Vous pouvez définir start="3"
sur la troisième li
de la deuxième ol
, mais vous devez maintenant la modifier chaque fois que vous ajoutez un élément à la première ol
.
Solution
Commençons par effacer le formatage de notre numérotation actuelle.
ol {
list-style: none;
}
Nous aurons chaque li montrer le compteur
ol li:before {
counter-increment: mycounter;
content: counter(mycounter) ". ";
}
Maintenant, nous devons juste nous assurer que le compteur ne se réinitialise que sur la première ol
au lieu de chacune.
ol:first-of-type {
counter-reset: mycounter;
}
Démo
http://codepen.io/ajkochanowicz/pen/mJeNwY
Maintenant, je peux ajouter autant d’articles à la liste et la numérotation sera préservée.
1. Item one
2. Item two
...
n. Item n
Interruption from a <p> tag
n+1. Item n+1
n+2. Item n+2
...
Comme d'autres l'ont suggéré, on peut utiliser l'attribut start
de l'élément ol
.
Vous pouvez également utiliser l'attribut value
de l'élément li
. Les deux attributs sont marqués comme obsolètes dans HTML 4.01 , mais pas dans HTML 5 ( ol
et li
).
<ol start="-2">
<li>Alpha</li>
<li>Beta</li>
<li value="10">Gamma</li>
<li>Delta</li>
</ol>
Je suis surpris que je n'ai pas pu trouver la réponse dans ce fil.
J'ai trouvé cette source , que j'ai résumée ci-dessous:
Pour définir l'attribut de début d'une liste ordonnée à l'aide de CSS au lieu de HTML, vous pouvez utiliser la propriété counter-increment
comme suit:
ol {
list-style: none;
counter-increment: start 3;
}
li:before {
content: counter(start, lower-alpha) ") ";
counter-increment: start;
}
counter-increment
semble être indexé sur 0, alors pour obtenir une liste commençant à 4, utilisez 3
.
Pour le code HTML suivant
<ol>
<li>Buy milk</li>
<li>Feed the dog</li>
<li>Drink coffee</li>
</ol>
Mon résultat est
d) Buy milk
e) Feed the dog
f) Drink coffee
Découvrez mon violon
Voir aussi la Référence wiki W3
Dans le cas où les listes sont imbriquées, il doit exister un traitement qui exclut les éléments de la liste imbriquée, ce que j'ai accompli en vérifiant que le grand parent n'est pas un élément de la liste.
var section = document.getElementById("TheContent");
var list = section.getElementsByTagName("li");
var cnt = 0;
for (var i=0;i<list.length;i++){
if (list[i].parentElement.parentElement.nodeName!="LI") {
cnt += 1;
list[i].setAttribute("value",cnt);
}
}
<!DOCTYPE html>
<html>
<body>
<section id="TheContent">
<h2>Ordered Lists - numbering not interupted</h2>
<p>This example avoids for the first list level that each ordered list starts with 1:</p>
<p><strong>1st list:</strong></p>
<ol>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
</ol>
<p><strong>2nd list:</strong></p>
<ol>
<li>item</li>
<li>item
<ol>
<li>item</li>
<li>item</li>
<li>item</li>
</ol>
</li>
<li>item</li>
</ol>
</section>
</body>
</html>
Avec CSS, il est un peu délicat de traiter le cas d’éléments de liste imbriqués. Ainsi, seul le premier niveau de liste obtient la numérotation personnalisée qui n’interrompt pas chaque nouvelle liste ordonnée. J'utilise le combinateur CSS '>' pour définir les chemins possibles vers les éléments de liste qui doivent obtenir une numérotation personnalisée. Voir https://www.w3schools.com/css/css_combinators.asp
body {
counter-reset: li_cnt;
}
/* discard auto generated numbers */
ol {
list-style-type: none;
}
/* all possible paths to the list item that shall have custom numbering */
section#TheContent > ol > li:before,
body > ol > li:before {
counter-increment: li_cnt;
content: counter(li_cnt)'. '; /* add own numbers */
}
/* switch on default auto generated numbers for nested list items */
li > ol {
list-style-type: decimal;
}
<!DOCTYPE html>
<html>
<body>
<section id="TheContent">
<h2>Ordered Lists - numbering not interupted</h2>
<p>This example avoids for the first list level that each ordered list starts with 1:</p>
<p><strong>1st list:</strong></p>
<ol>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
</ol>
<p><strong>2nd list:</strong></p>
<ol>
<li>item</li>
<li>item
<ol>
<li>item</li>
<li>item</li>
<li>item</li>
</ol>
</li>
<li>item</li>
</ol>
</section>
</body>
</html>
Le démarrage de la numérotation d'une liste ordonnée à un numéro différent de la valeur par défaut ("1") nécessite l'attribut start
. Cet attribut était autorisé (non obsolète) dans la spécification HTML 4.01 (HTML 4.01 n'était pas encore une "spécification remplacée" au moment où cette question a été publiée) et est toujours autorisé dans le HTML 5.2 actuel). spécification . L'élément ol
avait également un attribut start
facultatif dans DTD transitoire de XHTML 1.0 mais pas dans DTD stricte de XHTML 1.0 (recherchez la chaîne ATTLIST ol
et vérifiez la liste d'attributs). Donc, malgré ce que disent certains commentaires plus anciens, l'attribut start
n'était pas deprecated; c'était plutôt invalid dans les DTD strictes de HTML 4.01 et XHTML 1.0. Malgré ce que dit l'un des commentaires, l'attribut start
n'est pas autorisé sur l'élément ul
et ne fonctionne pas actuellement dans Firefox et Chromium.
Notez également qu'un séparateur de milliers ne fonctionne pas (dans les versions actuelles de Firefox et Chromium). Dans l'extrait de code suivant, 10.000
sera interprété comme 10
; il en va de même pour 10,000
. Donc, n'utilisez pas le type suivant de valeur counter
:
<ol start="10.000">
<li>Item 10.000</li>
<li>Next item</li>
<li>Next item</li>
</ol>
Vous devez donc utiliser les éléments suivants (dans les rares cas où des valeurs supérieures à 1000 sont requises):
<ol start="10000">
<li>Item 10.000</li>
<li>Next item</li>
<li>Next item</li>
</ol>
Certaines des autres réponses suggèrent d'utiliser la propriété CSS counter
, mais cela va à l'encontre de la séparation traditionnelle du contenu et de la présentation (en HTML et CSS, respectivement). Les utilisateurs souffrant de certaines déficiences visuelles peuvent utiliser leurs propres feuilles de style et les valeurs counter
peuvent être perdues. La prise en charge du lecteur d’écran pour counter
devrait également être testée. La prise en charge du contenu CSS par les lecteurs d’écran est une fonctionnalité relativement récente et le comportement n’est pas nécessairement cohérent. Voir Lecteurs d'écran et CSS: le style (et le contenu)?? De John Northup sur le blog de WebAIM (août 2017).