24

我正在维护一个旧版应用程序并遇到以下代码:

<ul>
   <li>...</li>
   <li>...</li>
   <li>...</li>
   <li>...</li>
   <li>...</li>
   <div>
      <li>...</li>
      <li>...</li>
   </div>
</ul>

我以前从未div将标签视为元素的子元素ul。HTML 在浏览器中呈现良好。

这是有效的 HTML 吗?我的直觉是,这是一种奇怪的用法。但是,也许这是完全正常和有效的?将元素嵌套在div元素内是否ul合适?你会推荐还是反对?

4

3 回答 3

17

它在任何版本的 HTML 中都无效,请参见例如HTML 4.01 onul

不过,浏览器允许它,并对其进行解析,使其div成为 的子项ul,并且它们也允许您设置样式div。这可能是使用此标记的原因。

于 2012-09-03T04:55:20.477 回答
7

HTML无序列表元素( <ul>) 表示项目的无序列表,即没有数字顺序的项目的集合,它们在列表中的顺序是没有意义的。通常,无序列表项用项目符号显示,项目符号可以有多种形式,如点、圆形或方形。项目符号样式未在页面的 HTML 描述中定义,而是在其关联的 CSS 中使用 list-style-type 属性定义。

允许的内容

零个或多个<li>元素,最终与<ol><ul>元素混合。

示例用法:

<ul>
  <li>first item</li>
  <li>second item</li>
  <li>third item</li>
</ul>

您可以像这样使用<div>内部<li>标签:

<ul>
  <li>first item</li>
  <li>second item</li>
  <li>
      third item
      <div>Third Item Contente</div>
  </li>
</ul>
于 2012-09-03T05:08:56.900 回答
6

您可以使用http://validator.w3.org/进行检查。
错误:
1.document类型不允许元素“DIV”在这里;假设缺少“LI”开始标签
2.document 类型不允许在此处使用元素“LI”;缺少“UL”、“OL”开始标签之一

The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.  

One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>").
于 2012-09-03T05:05:28.353 回答