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

zxlwwiss  于 2024-01-04  发布在  其他
关注(0)|答案(8)|浏览(98)

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

  1. <ul id="databases">
  2. Databases:
  3. <li>Microsoft SQL Server - 10+ years</li>
  4. <li>Sybase SQL Server - 5 years</li>
  5. <li>Oracle - 5 years</li>
  6. </ul>

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

aiqt4smr

aiqt4smr1#

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

  1. <h2>Databases:</h2>
  2. <ul id="databases">
  3. <li>Microsoft SQL Server - 10+ years</li>
  4. <li>Sybase SQL Server - 5 years</li>
  5. <li>Oracle - 5 years</li>
  6. </ul>

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

  1. <h2 class="subHeader">Languages:</h2>
  2. <ul id="languages">
  3. <li>English</li>
  4. <li>Chinese</li>
  5. <li>French</li>
  6. </ul>


否则给予它一个id

展开查看全部
wj8zmpe1

wj8zmpe12#

仅供参考,HTML 3.0<lh>

  1. <ul>
  2. <lh>This is a list header!
  3. <li>Item A
  4. <li>Item B
  5. <li>Item C
  6. </ul>

字符串

fhg3lkii

fhg3lkii3#

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

  1. <dl>
  2. <dt>Databases</dt>
  3. <dd>Microsoft SQL Server - 10+ years</dd>
  4. <dd>Sybase SQL Server - 5 years</dd>
  5. <dd>Oracle - 5 years</dd>
  6. <dt>Second heading</dt>
  7. <dd>Item 1</dd>
  8. <dd>Item 2</dd>
  9. <dd>Item 3</dd>
  10. </dl>

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

bqucvtff

bqucvtff4#

  1. <section>
  2. <h1>Databases:</h1>
  3. <ul>
  4. <li>Microsoft SQL Server - 10+ years</li>
  5. <li>Sybase SQL Server - 5 years</li>
  6. <li>Oracle - 5 years</li>
  7. </ul>
  8. </section>

字符串
或甚至更好

  1. <section>
  2. <h1>Databases:</h1>
  3. <dl>
  4. <dt>Microsoft SQL Server</dt> <dd>10+ years</dd>
  5. <dt>Sybase SQL Server</dt> <dd>5 years</dd>
  6. <dt>Oracle</dt> <dd>5 years</dd>
  7. </dl>
  8. </section>


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

展开查看全部
atmip9wb

atmip9wb5#

这里有一个替代答案:

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

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

h4cxqtbf

h4cxqtbf6#

或者像这样嵌套列表

  1. <ul>
  2. <li>Databases</li>
  3. <li>
  4. <ul>
  5. <li>Microsoft SQL Server - 10+ years</li>
  6. <li>Sybase SQL Server - 5 years</li>
  7. <li>Oracle - 5 years</li>
  8. </ul>
  9. </li>
  10. </ul>

字符串

crcmnpdw

crcmnpdw7#

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

  1. <figure>
  2. <figcaption>Databases</figcaption>
  3. <ul>
  4. <li>Microsoft SQL Server - 10+ years</li>
  5. <li>Sybase SQL Server - 5 years</li>
  6. <li>Oracle - 5 years</li>
  7. </ul>
  8. </figure>

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

  1. <ul title="Fruit">
  2. <li>Apple</li>
  3. <li>Pear</li>
  4. <li>Orange</li>
  5. </ul>


CSS:

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

展开查看全部
bwntbbo3

bwntbbo38#

也许是这样的:

  1. <div>
  2. <span>Databases:<span>
  3. <ul id="databases">
  4. <li>Microsoft SQL Server - 10+ years</li>
  5. <li>Sybase SQL Server - 5 years</li>
  6. <li>Oracle - 5 years</li>
  7. </ul>
  8. </div>

字符串

相关问题