Это беспокоило меня какое-то время, и мне интересно, есть ли какой-либо консенсус относительно того, как это сделать должным образом. Когда я использую список 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
.
Каков правильный способ сделать это? Любые идеи?