时间:2009-09-06 10:48:13

标签: html css

我看到这样的事情:

<div>
<style type="text/css">
...
</style>
</div>

这很奇怪,但仍然有效。

这违反标准吗?

5 个答案:

答案 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>中的任何内容下。

通常,您不允许将阻塞元素放入内联元素中,但是样式,脚本,元元素等元元素可能会出现在您想要的任何位置。