Od jakiegoś czasu mnie to niepokoi i zastanawiam się, czy istnieje jakikolwiek konsensus co do tego, jak to zrobić poprawnie. Kiedy używam listy HTML, jak semantycznie dołączyć nagłówek listy?
Jedna opcja jest taka:
<h3>Fruits I Like:</h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
ale semantycznie <h3>
nagłówek nie jest jawnie powiązany z<ul>
Inna opcja jest taka:
<ul>
<li><h3>Fruits I Like:</h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
ale wydaje się to trochę brudne, ponieważ nagłówek nie jest tak naprawdę jednym z elementów listy.
Ta opcja nie jest dozwolona przez W3C:
<ul>
<h3>Fruits I Like:</h3>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
as <ul>
może zawierać tylko jeden lub więcej <li>
plików
<lh>
Najbardziej sensowny jest stary „nagłówek listy”
<ul>
<lh>Fruits I Like:</lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
ale oczywiście nie jest oficjalnie częścią HTML
Słyszałem, że sugeruje, abyśmy używali <label>
tak jak formularza:
<ul>
<label>Fruits I Like:</label>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
ale jest to trochę dziwne i i tak się nie sprawdzi.
Łatwo jest zauważyć problemy semantyczne, próbując stylizować moje nagłówki listy, gdzie ostatecznie muszę umieścić moje <h3>
tagi w pierwszym <li>
i skierować je do stylizacji za pomocą czegoś takiego:
ul li:first-of-type {
list-style: none;
margin-left: -1em;
/*some other header styles*/
}
horrory! Ale przynajmniej w ten sposób mogę kontrolować całość <ul>
, nagłówki i wszystko, stylizując ul
tag.
Jaki jest właściwy sposób, aby to zrobić? Jakieś pomysły?