如何在HTML中对具有UL的头进行语义分组?

zxlwwiss  于 12个月前  发布在  其他
关注(0)|答案(8)|浏览(70)

我有一个HTML文档,我想在语义上将文本分组到UL的头部作为“header”。最初的尝试如下所示:

<ul id="databases">
        Databases:
        <li>Microsoft SQL Server - 10+ years</li>
        <li>Sybase SQL Server - 5 years</li>
        <li>Oracle - 5 years</li>
    </ul>

字符串
W3C验证器指出,在UL内部不允许有文本,但在LI外部是不允许的。我可以把文本放在LI内部,然后使用伪类:first-child在我的CSS中查找“header”,但这显然不是语义正确的方法。
我该如何正确处理这件事?

aiqt4smr

aiqt4smr1#

它不应该在第一个li中设置,因为这将假定与后续li元素的兄弟关系,而头部在层次结构中更重要。

<h2>Databases:</h2>
<ul id="databases">        
    <li>Microsoft SQL Server - 10+ years</li>
    <li>Sybase SQL Server - 5 years</li>
    <li>Oracle - 5 years</li>
</ul>

字符串
根据与页面上其他标题的层次关系,将h2替换为h(n)。如果有其他标题共享相同的样式,那么在css中定位标题只需给予一个类。

<h2 class="subHeader">Languages:</h2>
<ul id="languages">        
    <li>English</li>
    <li>Chinese</li>
    <li>French</li>
</ul>


否则给予它一个id

wj8zmpe1

wj8zmpe12#

仅供参考,HTML 3.0<lh>

<ul>
    <lh>This is a list header!
    <li>Item A
    <li>Item B
    <li>Item C
</ul>

字符串

fhg3lkii

fhg3lkii3#

您可以尝试使用<dl>(描述列表)标记来实现列表目的,这样可以获得更简洁的代码。

<dl>
  <dt>Databases</dt>
   <dd>Microsoft SQL Server - 10+ years</dd>
   <dd>Sybase SQL Server - 5 years</dd>
   <dd>Oracle - 5 years</dd>
  <dt>Second heading</dt>
   <dd>Item 1</dd>
   <dd>Item 2</dd>
   <dd>Item 3</dd>
</dl>

字符串
更多关于描述列表的信息,请参见http://www.w3schools.com/tags/tag_dl.asp

bqucvtff

bqucvtff4#

<section>
    <h1>Databases:</h1>
    <ul>
        <li>Microsoft SQL Server - 10+ years</li>
        <li>Sybase SQL Server - 5 years</li>
        <li>Oracle - 5 years</li>
    </ul>
</section>

字符串
或甚至更好

<section>
    <h1>Databases:</h1>
    <dl>
        <dt>Microsoft SQL Server</dt> <dd>10+ years</dd>
        <dt>Sybase SQL Server</dt>    <dd>5 years</dd>
        <dt>Oracle</dt>               <dd>5 years</dd>
    </dl>
</section>


注意,h1被限制在section中,所以列表后面的内容是否属于标题 Databases 并不模糊。换句话说,标题在节中的作用域是scoped

atmip9wb

atmip9wb5#

这里有一个替代答案:

<ul id="databases">
        <li style="list-style:none"><strong>Databases:</strong></li>
        <li>Microsoft SQL Server - 10+ years</li>
        <li>Sybase SQL Server - 5 years</li>
        <li>Oracle - 5 years</li>
    </ul>

字符串
这样做的好处是你可以在你的UL中使用几个这样的“头”,而不用把它们分成单独的UL和默认白色,这会导致(或者使用CSS来消除空白...)

h4cxqtbf

h4cxqtbf6#

或者像这样嵌套列表

<ul>
    <li>Databases</li>
    <li>
        <ul>
            <li>Microsoft SQL Server - 10+ years</li>
            <li>Sybase SQL Server - 5 years</li>
            <li>Oracle - 5 years</li>
        </ul>
    </li>
</ul>

字符串

crcmnpdw

crcmnpdw7#

根据my answer to this question,我发现HTML5 figurefigcaption元素最合适:

<figure>
    <figcaption>Databases</figcaption>
    <ul>
        <li>Microsoft SQL Server - 10+ years</li>
        <li>Sybase SQL Server - 5 years</li>
        <li>Oracle - 5 years</li>
    </ul>
</figure>

字符串
或者CSS3的::before伪元素可以是一个很好的解决方案:
超文本标记语言:

<ul title="Fruit">
    <li>Apple</li>
    <li>Pear</li>
    <li>Orange</li>
</ul>


CSS:

ul[title]::before {
    content: attr(title);
    /* then add some nice styling as needed, eg: */
    display: block;
    font-weight: bold;
    padding: 4px;
}

bwntbbo3

bwntbbo38#

也许是这样的:

<div>
 <span>Databases:<span>
 <ul id="databases">
        <li>Microsoft SQL Server - 10+ years</li>
        <li>Sybase SQL Server - 5 years</li>
        <li>Oracle - 5 years</li>
 </ul>
 </div>

字符串

相关问题