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