Cela me dérange depuis un certain temps, et je me demande s'il existe un consensus sur la manière de procéder correctement. Lorsque j'utilise une liste HTML, comment puis-je inclure sémantiquement un en-tête pour la liste?
Une option est la suivante:
<h3>Fruits I Like:</h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mais sémantiquement l'en- <h3>
tête n'est pas explicitement associé au<ul>
Une autre option est la suivante:
<ul>
<li><h3>Fruits I Like:</h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mais cela semble un peu sale, car l'en-tête n'est pas vraiment l'un des éléments de la liste.
Cette option n'est pas autorisée par le W3C:
<ul>
<h3>Fruits I Like:</h3>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
comme <ul>
« s ne peuvent contenir un ou plusieurs <li>
s »
L'ancien "en-tête de liste" <lh>
est le plus logique
<ul>
<lh>Fruits I Like:</lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mais bien sûr, cela ne fait pas officiellement partie du HTML
J'ai entendu dire que nous <label>
utilisions comme un formulaire:
<ul>
<label>Fruits I Like:</label>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mais c'est un peu étrange et ne validera pas de toute façon.
Il est facile de voir les problèmes sémantiques en essayant de styliser les en- têtes de ma liste, où je finis par avoir besoin de mettre mes <h3>
balises dans le premier <li>
et de les cibler pour le style avec quelque chose comme:
ul li:first-of-type {
list-style: none;
margin-left: -1em;
/*some other header styles*/
}
horreurs! Mais au moins de cette façon, je peux contrôler l'ensemble <ul>
, l'en-tête et tout, en stylisant l' ul
étiquette.
Quelle est la bonne façon de procéder? Des idées?