10 个答案:

答案 0 :(得分:98)

style应该仅包含在文档的head中。

除了验证点之外,在style上使用body时可能感兴趣的一个警告是flash of unstyled content。浏览器会在显示后显示样式的元素,使它们在大小/形状/字体和/或闪烁上移动。这通常是工艺糟糕的表现。一般情况下,您可以将style放在任何您想要的地方,但尽可能避免使用它。

HTML 5引入了scoped属性,允许style标记包含在正文的任何位置,但随后又将其删除。

答案 1 :(得分:19)

虽然其他答案都是正确的,但我很惊讶没有人解释哪里标准不允许head之外的样式。

是的,我知道。 DTD难以阅读。

这是STYLE元素出现的唯一地方,因此隐含地在其他地方无效。

答案 2 :(得分:18)

根据最新的WhatWG和W3C规范,是的,style元素必须始终位于head。有一段时间,规范包含scoped元素的style属性,当存在时,允许将它们放置在正文中的元素内,以仅设置该元素的后代的样式...但该特征从不使它成为任何真正的浏览器(至少不需要通过开发人员标志启用)并从两个规范"due to lack of implementer interest"中删除。因此,style元素现在只允许在允许元数据内容的上下文中使用,而元数据内容只是头部。

(好吧,相当是真的 - 您可以合法地将元数据内容(包括style元素)放在body内的template元素中,但它如果你在支持模板的浏览器中,它实际上不会生效。这实际上只是一个愚蠢的技术性。)

CTRL-Fing single-page spec显示内容模型包含元数据内容的唯一元素是head元素。

同时,latest W3C draft spec包含完全相同的措辞,但它们还列出了template元素的内容模型中的元数据内容。 (WhatWG以不同的方式概括template并将其内容模型列为nothing。)

WhatWG规范中的非规范性index of elements确认style元素的唯一允许父级是head或noscript元素。 (同一索引的W3版本错误地指出流内容可以包含

答案 3 :(得分:14)

他们不应该超越头脑,但无论如何他们都会工作;虽然你可能会注意到快速闪烁。该网站不应该使用头部以外的样式标签进行验证,但这真的很重要吗?此外,链接标签也可以在头部以外工作,即使它们不应该也是如此。

答案 4 :(得分:4)

与其他回复一样,它实际上并不需要在那里。但是,它不会验证。在这种情况下,这可能或不重要,但请记住,html的渲染完全取决于浏览器。据我所知,今天使用的所有浏览器都支持将它置于脑外,但是你不能保证将来的浏览器和未来的浏览器版本。

坚持标准,你就更安全了。非常讨论会有多安全。

答案 5 :(得分:3)

HTML5.2 W3C建议,2017年12月14日(不是上面提到的早期草案)说,您可以加入

答案 6 :(得分:3)

内的任何地方的样式标记都不会使用W3C规则进行验证。


答案 7 :(得分:2)

根据此网站,HTML5.1(草案中)和WHATWG允许将

浏览器似乎也支持了很长一段时间。根据StackOverflow的回答,Firefox 3 +,IE6 +,Safari 2+和Chrome 12+支持它:

答案 8 :(得分:1)

根据HTML 5.2规范(草案中),样式标记仅允许在文档的头部。

样式元素仅限于出现在头部

文档。

答案 9 :(得分:-1)

您可以在头部或身体部分内使用样式标记,也可以在html标记之外使用样式标记(不建议使用外侧html)。实时项目很多时候你可以看到他们在html标签旁边使用样式标签