Это беспокоило меня какое-то время, и мне интересно, есть ли какой-либо консенсус относительно того, как это сделать должным образом. Когда я использую список HTML, как я семантически включаю заголовок для списка?
Один из вариантов:
<h3>Fruits I Like:</h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
но семантически заголовок <h3> явно не связан с <ul>
Другой вариант:
<ul>
<li><h3>Fruits I Like:</h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
но это кажется немного грязным, поскольку заголовок на самом деле не является одним из элементов списка.
Этот параметр не разрешен W3C:
<ul>
<h3>Fruits I Like:</h3>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
как <ul> может содержать только один или несколько <li> 's
Старый "заголовок списка" <lh> имеет наибольшее значение
<ul>
<lh>Fruits I Like:</lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
но, конечно, это не официально часть HTML
Я слышал, что он предложил использовать <label> как форму:
<ul>
<label>Fruits I Like:</label>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
но это немного странно и в любом случае не будет проверять.
Легко увидеть семантические проблемы при попытке стилизации заголовков своих списков, где мне нужно разместить теги <h3> в пределах первого <li> и настроить их для стилизации с помощью чего-то вроде:
ul li:first-of-type {
list-style: none;
margin-left: -1em;
/*some other header styles*/
}
ужас! Но, по крайней мере, таким образом я могу контролировать весь <ul>, заголовок и все, путем создания тега ul.
Каков правильный способ сделать это? Любые идеи?