Questo mi ha infastidito per un po 'e mi chiedo se ci sia consenso su come farlo correttamente. Quando utilizzo un elenco HTML, come faccio a includere semanticamente un'intestazione per l'elenco?
Un'opzione è questa:
<h3>Fruits I Like:</h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
ma semanticamente il <h3>
titolo non è esplicitamente associato al<ul>
Un'altra opzione è questa:
<ul>
<li><h3>Fruits I Like:</h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
ma questo sembra un po 'sporco, poiché l'intestazione non è proprio uno degli elementi dell'elenco.
Questa opzione non è consentita dal W3C:
<ul>
<h3>Fruits I Like:</h3>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
come <ul>
's possono contenere solo una o più <li>
' s
La vecchia "intestazione della lista" <lh>
ha più senso
<ul>
<lh>Fruits I Like:</lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
ma ovviamente non fa ufficialmente parte dell'HTML
Ho sentito suggerire che usiamo <label>
proprio come un modulo:
<ul>
<label>Fruits I Like:</label>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
ma questo è un po 'strano e non sarà comunque valido.
È facile vedere i problemi semantici quando provo a modellare le intestazioni della mia lista, dove finisco per aver bisogno di inserire i miei <h3>
tag nei primi <li>
e indirizzarli per lo stile con qualcosa come:
ul li:first-of-type {
list-style: none;
margin-left: -1em;
/*some other header styles*/
}
orrori! Ma almeno in questo modo posso controllare l'intero <ul>
, titolo e tutto, applicando uno stile al ul
tag.
Qual è il modo corretto per farlo? Qualche idea?