Cela a été me tracasse depuis un moment, et je me demandais si il n'y a aucun consensus sur la façon de le faire correctement. Quand je suis à l'aide d'une liste HTML, comment puis-je sémantiquement inclure un en-tête de la liste?
Une option est ceci:
<h3>Fruits I Like:<h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mais sémantiquement l' <h3>
- tête n'est pas explicitement associé à l' <ul>
Une autre option est ceci:
<ul>
<li><h3>Fruits I Like:<h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mais cela semble un peu sale, comme le titre 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>
en tant que <ul>
s'ne peut contenir un ou plusieurs <li>
s'
L'ancienne "tête de liste" <lh>
qui fait le plus de sens
<ul>
<lh>Fruits I Like:<lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mais bien sûr, il n'est pas officiellement partie de HTML
J'ai entendu dire que nous utilisons <label>
comme une forme:
<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 la semantical des problèmes lorsque vous tentez de mon style de liste des en-têtes, où je suis obligé de mettre mon <h3>
tags à l'intérieur du premier <li>
et les cibles 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 de l' <ul>
, en-tête et tous, par le style de l' ul
balise.
Quelle est la bonne façon de le faire? Des idées?