Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 允许在列表中使用div吗?_Html_Validation_Xhtml_Html Lists - Fatal编程技术网

Html 允许在列表中使用div吗?

Html 允许在列表中使用div吗?,html,validation,xhtml,html-lists,Html,Validation,Xhtml,Html Lists,我知道DIVinsideLI是不允许的,但我最近在很多“大”网站上看到过,比如《粉碎》杂志、网页设计师墙。。。等等 我试图验证站点,但它们有错误,但在LI中没有关于DIV的内容 因此,我可以在LI中使用它,并且我需要它是有效的吗?是的,根据xhtml1 strict.dtd它是有效的。以下XHTML将通过以下命令: 试验 试验 如果你看,你会看到 <!ELEMENT li %Flow;> <!ENTITY % Flow "(#PCDATA | %block; | form

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

我试图验证站点,但它们有错误,但在
LI
中没有关于
DIV
的内容


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

是的,根据
xhtml1 strict.dtd
它是有效的。以下XHTML将通过以下命令:


试验
  • 试验
如果你看,你会看到

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


因此,
div
p
等可以位于
li
(根据w3.org的XHTML1.0严格DTD)。

作为附录:在HTML5之前,当li中的div有效时,dl、dd或dt中的div无效

如果我没记错的话,li中的div过去是无效的

@超级乳酪之花
Div应该在语义上定义文档的一部分,但实际上它已经失去了这个角色。Span应该包含文本。

我知道如果你想让菜单项的整个框都可以点击的话,你应该这样做。我曾经在“a”标记中插入一个“li”标记来执行此操作,但这似乎更有效。

我从webdesign领域开始,在LIs中使用div,语义没有问题。 我认为列表中不允许使用DIV,这意味着你不能将DIV放在UL中,但将其插入LI中没有问题(因为LI只是列表项哈哈) 我一直遇到的问题是,有时DIV的行为有些不同于平常,但没有什么是我们好的CSS不能处理的,哈哈。 无论如何,对不起我的英语不好,如果我的回答没有帮助的话,哈哈
祝你好运

谁说
不是
  • 的有效子元素?你问的是具体案例还是一般问题?通常,在LI中不使用DIV。从语义上讲,DIV没有任何意义——它只是一个用于表示关注点的容器。因此,它不会真正影响文档的语义,但在大多数情况下,如果您可能想使用SPAN标记,则SPAN标记可能是更好的选择。规则是不允许
    作为
    的直接后代。因为其中只允许列表项(
  • )。
  • 可以包含在
  • 中有效的任何元素-它在
    中仍然有效@buildakecker-仅在HTML5中使用(此声明是可能的,因为HTML5不再基于SGML,因此不需要DTD)。在需要DTD的HTML规范的其他迭代中使用它是不正确的。@DavidWatson感谢这里的澄清。我没有在他的问题中看到DocType声明,但是在这个答案中看到了。如果它在严格意义上有效,那么它在严格意义上有效everything@jasdeepkhalsa不完全是。XHTML 1.0 Strict中有几个属性在HTML5中不再有效。对于HTML4.01 DTD也是如此。section元素是您要定义文档节的元素。div没有任何意义。你说的是一份草稿,但这还不是现实。如果我没记错@mystrdat,你是对的。有人质疑我最近关于你不能这样做的断言,当我查到它时,我错了。但我强烈地记得有一次,当错误输出明确指出我不允许在lis中放置div时,我实际验证了标记。实际上,根据HTML5草案,and元素的内容模型是“flow content”,因此在这两个元素中都允许使用
    div
    。你说得对,它在
    dl
    中是不被允许的。HTML4就是这样。。我编辑了我对clarifyA链接的回答,确认了这个答案:如果你想让菜单项的“整个框”可点击,你只需要用CSS将其子锚元素设置为“display:block”或“display:inline block”。无需为此目的对标记进行黑客攻击。
    <!ELEMENT li %Flow;>
    <!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
    <!ENTITY % block
         "p | %heading; | div | %lists; | %blocktext; | fieldset | table">