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