我看到这样的事情:
<div>
<style type="text/css">
...
</style>
</div>
这很奇怪,但仍然有效。
这违反标准吗?
答案 0 :(得分:9)
值得指出的是,尽管它是无效的HTML,但它也非常常见,任何不支持它的浏览器都无法正确呈现网络的重要部分。
特别是混搭,需要使用此功能,HTML 5定义&lt; style scoped&gt;处理这个用例。 &lt; style scoped&gt;虽然如此定义的样式不适用于整个文档,但只能出现在&lt; style scoped&gt;中的部分。出现。
警告:HTML 5是草稿,并且无法保证&lt; style scoped&gt;或者任何其他尚未实现的HTML 5功能都将被实现。
答案 1 :(得分:7)
是的,它违反了HTML规范。
<!ELEMENT DIV - - (%flow;)* -- generic language/style container -->
(来自div section of the specification)
如果您想查看%flow的确切方式,请按照实时版本中的超链接;扩展(不包括样式)。
浏览器往往会进行大量的错误恢复,因为很多作者都做了愚蠢的事情。
不依赖于错误恢复 - 那里有很多浏览器,当HTML不符合规范时,它们的行为都不一样。
答案 2 :(得分:4)
STYLE
element仅允许作为HEAD
element的子级。有关详细信息,请参阅this explanation。
答案 3 :(得分:0)
我找到了一个示例,其中div内的标签未被IE8正确读取(它在Firefox和Chrome中正常工作) 我不能用一个简单的例子重现它,因为我不知道问题出在哪里。但是,如果我移动外面的div,一切都会再次运作。 为什么我在div中使用标签?因为我在那个div里面用AJAX加载外部数据,我不知道在那种情况下添加样式的其他方法。
答案 4 :(得分:0)
在HTML5中,<style>
标记允许出现在<body>
或<head>
中的任何内容下。
通常,您不允许将阻塞元素放入内联元素中,但是样式,脚本,元元素等元元素可能会出现在您想要的任何位置。