Esto me ha estado molestando por un tiempo y me pregunto si hay algún consenso sobre cómo hacerlo correctamente. Cuando estoy usando una lista HTML, ¿cómo incluyo semánticamente un encabezado para la lista?
Una opción es esta:
<h3>Fruits I Like:</h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
pero semánticamente el <h3>
encabezado no está explícitamente asociado con el<ul>
Otra opción es esta:
<ul>
<li><h3>Fruits I Like:</h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
pero esto parece un poco sucio, ya que el título no es realmente uno de los elementos de la lista.
Esta opción no está permitida por el W3C:
<ul>
<h3>Fruits I Like:</h3>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
como <ul>
's sólo pueden contener uno o más <li>
' s
El antiguo "título de lista" <lh>
tiene más sentido
<ul>
<lh>Fruits I Like:</lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
pero, por supuesto, no forma parte oficialmente de HTML
Escuché que sugirió que usemos <label>
como un formulario:
<ul>
<label>Fruits I Like:</label>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
pero esto es un poco extraño y no se validará de todos modos.
Es fácil ver los problemas semánticos al intentar diseñar los encabezados de mi lista, donde termino necesitando poner mis <h3>
etiquetas dentro de la primera <li>
y apuntar a ellas para diseñar con algo como:
ul li:first-of-type {
list-style: none;
margin-left: -1em;
/*some other header styles*/
}
horrores! Pero al menos de esta manera puedo controlar todo <ul>
, el encabezado y todo, diseñando la ul
etiqueta.
¿Cuál es la forma correcta de hacer esto? ¿Algunas ideas?