允许使用 div 内部列表吗?

我知道 LI里面的 DIV是不允许的,但是我最近在很多“大”网站上看到过,比如 粉碎杂志网页设计墙等等。

我试图验证网站,他们有错误,但没有关于 DIVLI? !

那么我可以在 LI中使用它,并且我需要它是有效的吗?

179864 次浏览

是的,根据 xhtml1-strict.dtd它是有效的。以下 XHTML 通过 确认:

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>
<body>
<ul>
<li><div>test</div></li>
</ul>
</body>
</html>

如果你看看 Xhtml1-strict.dtd,你会发现

<!ELEMENT li %Flow;>
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
<!ENTITY % block
"p | %heading; | div | %lists; | %blocktext; | fieldset | table">

因此,divp等等可以在 li内部(根据 w3.org 上的 XHTML 1.0 StrictDTD)。

作为补充: 在 HTML 5之前,当 li 中的 div 有效时,dl、 dd 或 dt 中的 div 无效!

如果我没记错的话,li 曾经是中的 div 是无效的。

@ Flower@SuperstringCheese Div 应该从语义上定义文档的一部分,但实际上它已经失去了这个角色。然而,Span 应该包含文本。

我知道如果你想让菜单项的整个框都可以点击的话,你会这样做的。我过去常常在 <a>标记中插入一个 <li>标记来做到这一点,但是这似乎更有效。