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

eao*_*son 126 html coding-style html-head

严格来说,style标签是否需要在headHTML文档中?4.01标准意味着,但没有明确说明:

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

我说"严格来说"因为我有一个应用程序将样式元素放在正文中,而我测试过的所有浏览器似乎都使用了样式元素.我只是想知道这是否合法.

Est*_*ber 100

style应该只包含head在文档的中.

除了验证点,使用时您可能感兴趣的一个警告stylebody的无样式内容闪烁.浏览器将获得显示后将被设置样式的元素,使它们在大小/形状/字体和/或闪烁上移位.这通常是工艺糟糕的表现.一般来说,你可以放置style任何你想要的东西,但尽可能避免它.

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

  • 到目前为止,似乎只有Firefox支持`scoped`属性,请参阅http://caniuse.com/#feat=style-scoped. (6认同)
  • 链接的文章已经消失在链接rotæther中,所以这里是最新的可用存档版本:http://web.archive.org/web/20150525042412/http://bluerobot.com/web/css/fouc.asp (2认同)

use*_*621 19

虽然其他答案都是正确的,但我很惊讶没有人解释过哪些标准不允许使用样式head.

它实际上在The headElement(和DTD)的部分中:

<!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
Run Code Online (Sandbox Code Playgroud)

是的我知道.DTD难以阅读.

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

  • 我感到很困惑. (6认同)

Mar*_*ery 18

根据最新的WhatWG和W3C规范,是的,style元素必须始终在head.有一段时间,specs包含了一个元素的scoped属性style,当它存在时,允许它们被放置在body中的一个元素中,只对该元素的后代进行样式化......但是这个特性从未进入任何真正的浏览器(至少不是无需通过开发人员标志启用)并且由于缺乏实施者兴趣而从两个规范中删除.因此,style现在只允许在允许元数据内容的上下文中使用元素,元数据内容只是头部.

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

WHATWG规范有这样一段话:

4.2.6.该style元素

分类:

元数据内容.

可以使用此元素的上下文:

元数据内容的预期.
<noscript>元素中是元素的子<head>元素.

CTRL-Fing通过单页规范显示,其内容模型包含元数据内容的唯一元素是head元素.

同时,最新的W3C草案规范包含完全相同的措辞,除了它们还在template元素的内容模型中列出元数据内容.(WhatWG template以不同的方式构思,并将其内容模型列为nothing.)

WhatWG规范中元素的非规范性索引证实元素的唯一允许父style元素是元素headnoscript元素.(同一索引的W3版本错误地指出流内容可以包含<style>元素,但这是W3C在删除scoped属性时引入的错误.我有一个拉取请求打开来修复它.)


geo*_*wa4 15

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

  • imo,样式渲染=作品; 没有什么棘手的.最后一句需要改写; 这没有道理.当我说它不会验证时,我提到它是如何"正确"的,所以我不能理解你对那句话的意思. (6认同)
  • 说"他们工作"有点棘手.最好的情况是你可以说大多数当前的浏览器仍会呈现样式,但这个错误本身并没有"有用".它不能在任何浏览器的任何未来版本中工作,他们也不会做错任何事情. (5认同)
  • 除非样式标签是身体的第一个 (2认同)