<STYLE>是否必须位于HTML文档的<HEAD>中?

严格来说, style标签需要在HTML文档的head吗? 4.01标准暗示着,但没有明确说明:

STYLE元素允许作者将样式表规则放在文档的头部。 HTML允许文档的HEAD部分中包含任意数量的STYLE元素。

我说“严格来说”是因为我有一个将样式元素放在body中的应用程序,而且我testing过的所有浏览器似乎都使用样式元素。 我只是想知道这是否合法。

style应该只包含在文档的head

除了validation点之外,在body上使用style时可能会感兴趣的一个警告是无格式内容的闪烁 。 浏览器会显示元素显示样式,使他们在大小/形状/字体和/或闪烁上移动。 这通常是工艺不好的标志。 一般来说,只要有可能,就可以随时随地放置style ,但是尽量避免使用style

HTML 5引入了一个scoped属性,允许style标签被包含在主体中的任何地方,但是随后他们又将其删除。

虽然其他答案是正确的,我很惊讶没有人解释标准在哪里不允许风格。

它实际上在元素head (和DTD中 ):

 <!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" --> <!ENTITY % head.content "TITLE & BASE?"> <!ELEMENT HEAD OO (%head.content;) +(%head.misc;) -- document head --> 

是的我知道。 DTD很难阅读。

这是STYLE元素发生的唯一地方,所以隐含地在其他地方是无效的。

根据最新的WhatWG和W3C规范,是的, style元素必须始终在head 。 有一段时间,规范包含了style元素的scoped属性,当存在的时候,允许它们被放置在body中的一个元素中,以仅仅风格化该元素的后代…但是这个特性从来没有将它变成真正的浏览器至less不是不需要通过开发者标志来启用)并且由于缺乏实施者兴趣而被从两个规格中移除。 因此, style元素现在只允许在允许元数据内容的上下文中使用,而元数据内容只是头部。

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

WhatWG规范有这样的说法:

4.2.6。 style元素

类别 :

元数据内容 。

可以使用这个元素的上下文 :

预期元数据内容 。
在作为<noscript> <head>元素的子元素的<noscript>元素中。

通过单页规范的 CTRL-Fing揭示了其内容模型包括元数据内容的唯一元素是head元素。

同时, 最新的W3C草案规范包含完全相同的措辞,除了它们还在template元素的内容模型中列出元数据内容。 (WhatWG对template不同的概念化,并将其内容模型列为空白)。

WhatWG规范中的元素的非规范索引确认style元素的唯一允许的父项是head或无noscript元素。 (同一个索引的W3版本错误地指出,stream内容可以包含<style>元素,但这是W3C在删除scoped属性时引入的一个错误,我打开了一个拉取请求来解决这个问题。

他们不应该走出头顶,但他们仍然工作; 尽pipe你可能会注意到一个快速的闪烁。 该网站不应该用头部外的样式标签进行validation,但这真的很重要吗? 而且,链接标签也在头部外面工作,即使它们不应该。

就像其他答复所说,实际上并不需要在那里。 但是,它不会validation。 在这种情况下,这可能也可能不重要,但请记住,html的呈现完全取决于浏览器。 据我所知,今天所有使用过的浏览器都将支持将其放在首位,但是您不能保证将来的浏览器和未来的浏览器发布。

坚持标准,你更安全。 非常多的辩论要安全多less。

除了<head>任何地方,样式标签都不会使用W3C规则进行validation。

根据这个网站,HTML5.1(草案)和WHATWG允许<style>标签被放在正文中:

http://www.html.am/tags/html-style-tag.cfm

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

https://stackoverflow.com/a/10989663/297793

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

HTML 5.2风格标签草案(2016年8月18日)

样式元素被限制在文档的头部。

你也可以在head部分或body部分使用style标签,也可以在html标签之外使用(不推荐使用out html)。 实时项目很多时候你可以看到他们使用html标签的样式标签