这困扰了我一段时间,我想知道在如何正确执行此操作方面是否存在共识。当我使用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>
's只能含有一种或多种<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
标签进行样式控制来控制整个标题。
正确的方法是什么?有任何想法吗?