我正在尝试使用Dreamweaver订购使用li标记创建的一些行。清楚:两者都做得很好,在Dreamweaver中看起来也不错。但当我验证代码时,我会收到一些类似的错误:
Line 65, Column 53: document type does not allow element "div" here; assuming missing "li" start-tag
<div style="clear: both; background: none; "></div>
Line 73, Column 12: document type does not allow element "li" here; missing one of "ul", "ol", "menu", "dir" start-tag
<li>
我的代码在这里:http://sudrap.org/paste/text/90799/
使用div
在语义上是不正确的。
ul
和ol
元素只能将li
的作为子节点。li
可能有其他类型的元素。
CSS伪选择器:after
应该在这里为您完成任务。
或者你可以使用它的另一种变体,但我认为它符合你的要求。
试试这个:li:after {clear: both; }
您可以简单地将style="clear:both;"
添加到<li>
中,然后一起删除有问题的<div>
。
我不建议使用CSS li:after {}
,因为该选择器不兼容跨浏览器。
<li>
是一个内联元素,<div>
是一个块元素。
块:形成单独块的元素。
inline:一个与其余内容保持内联的元素。
因此,从理论上讲,内联元素中不可能存在块元素。但这只是理论上的,因为在实践中浏览器会将其解释为正常情况。
提示:不用担心W3C的验证!
div
如果要成为ul
标签的子标签,则需要位于li
标签内