Isso tem me incomodado por um tempo e estou me perguntando se há algum consenso sobre como fazer isso da maneira correta. Quando estou usando uma lista HTML, como posso incluir semanticamente um cabeçalho para a lista?
Uma opção é esta:
<h3>Fruits I Like:</h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mas semanticamente o <h3>
título não está explicitamente associado ao<ul>
Outra opção é esta:
<ul>
<li><h3>Fruits I Like:</h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mas isso parece um pouco sujo, pois o título não é realmente um dos itens da lista.
Esta opção não é permitida pelo W3C:
<ul>
<h3>Fruits I Like:</h3>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
as <ul>
's só podem conter um ou mais <li>
' s
O antigo "cabeçalho da lista" <lh>
faz mais sentido
<ul>
<lh>Fruits I Like:</lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mas é claro que não faz parte oficial do HTML
Já ouvi a sugestão de usar <label>
como um formulário:
<ul>
<label>Fruits I Like:</label>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
mas isso é um pouco estranho e não validará de qualquer maneira.
É fácil ver os problemas semânticos ao tentar estilizar os cabeçalhos da minha lista, onde acabo precisando colocar minhas <h3>
tags dentro do primeiro <li>
e direcioná-las para estilização com algo como:
ul li:first-of-type {
list-style: none;
margin-left: -1em;
/*some other header styles*/
}
horrores! Mas, pelo menos dessa forma, posso controlar o todo <ul>
, título e tudo, estilizando a ul
tag.
Qual é a maneira correta de fazer isso? Alguma ideia?