为了账号安全,请及时绑定邮箱和手机立即绑定

在<body>中使用<style>标签和其他HTML

在<body>中使用<style>标签和其他HTML

FFIVE 2019-07-26 15:54:40
在<body>中使用<style>标签和其他HTML<html>   <body>     <style type="text/css">       p.first {color:blue}       p.second {color:green}     </style>     <p class="first">Hello World</p>     <p class="second">Hello World</p>     <style type="text/css">       p.first {color:green}       p.second {color:blue}     </style>     <p class="first">Hello World</p>     <p class="second">Hello World</p>   </body></html>浏览器应该如何呈现不连续的css?是否应该使用页面上的所有css样式生成一些数据结构并使用它进行渲染?或者它按照它看到的顺序使用样式信息进行渲染?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

正如其他人已经提到的,HTML 4要求将<style>标记放在该<head>部分中(即使大多数浏览器允许其中的<style>标记body)。

但是,HTML 5包含scoped属性(请参阅下面的更新),该属性允许您创建范围在<style>标记的父元素中的样式表。这也使您可以<style><body>元素中放置标记:

<!DOCTYPE html><html><head></head><body><div id="scoped-content">
    <style type="text/css" scoped>
        h1 { color: red; } 
    </style>
    <h1>Hello</h1></div>
    <h1>
      World
    </h1></body></html>

如果在支持HTML-5的浏览器中呈现上述代码scoped,您将看到样式表的有限范围。 

只有一个重要的警告......

在我写这个答案时(2013年5月),几乎没有主流浏览器目前支持该scoped属性。(虽然显然Chromium的开发人员版本支持它。)

但是,scoped该问题属于一个有趣的含义。这意味着未来的浏览器通过标准强制要求允许<style>元素<body>(只要<style>元素具有范围)。

所以,鉴于:

  • 几乎每个现有浏览器当前都忽略该scoped属性

  • 几乎每个现有的浏览器目前都允许使用<style>标签<body>

  • 未来的实现将需要允许(范围)<style>标签<body>

......再有就是字面上没有害处在将* <style>身体内的标签,只要你面向未来他们有scoped属性。唯一的问题是当前的浏览器实际上不会限制样式表的范围 - 它们会将它应用于整个文档。但重点是,出于所有实际目的,您可以<style><body>提供的内容中包含标签:

  • 通过包含scoped属性,为HTML提供面向未来的证明

  • 了解到目前为止,其中的样式表<body>实际上并不是作用域的(因为还没有主流浏览器支持)


*当然除了惹恼HTML验证器...... 


最后,对于常见的(但主观)声称嵌入HTML中的CSS的不良做法,应该指出的是,整点的的scoped属性,以适应典型的现代开发框架,使开发人员可以导入HTML的块为模块或联合内容。嵌入式CSS 适用于特定的HTML块非常方便,以便开发具有特定样式的封装模块化组件。


根据Mozilla文档,截至2019年2月更新,该scoped属性已弃用。Chrome在版本36(2014)和Firefox版本62(2018)中停止支持它。在这两种情况下,用户必须在浏览器的设置中明确启用该功能。没有其他主流浏览器支持它。


查看完整回答
反对 回复 2019-07-26
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

坏消息的“风格体”爱好者:W3C最近失去了HTML战争对WHATWG,其versionless HTML“生活标准” 现在已经成为了一个官方的,这,唉,不会允许 STYLEBODY。短暂的快乐时光结束了。;)W3C验证器现在也适用于WHATWG规范。(谢谢@FrankConijn单挑!)

(注意:这是“截至今天”的情况,但由于没有版本控制,链接在任何时候都可能无效而无需通知或控制。除非您愿意链接到GitHub上的各个源提交,否则您基本上不能更长时间地对新的官方HTML标准AFAIK 进行稳定的引用。如果有正确的方法可以正确执行此操作,请纠正我。)

被曝光的好消息:

耶,STYLE终于在有效的BODY,作为HTML5.2的! (也scoped已经消失了。)

W3C规范津津乐道的最后一行!):

4.2.6。样式元素

...

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

预期元数据内容的位置。

在一个noscript元素中,它是head元素的子元素。

在体内,预计流量含量。


META SIDE-NOTE:

事实上,尽管“浏览器战争”受到了损害,我们仍然不得不继续开发针对两个荒谬竞争的 “官方”HTML“标准”(引用1 standard + 1 standard < 1 standard)意味着“回归到战壕常识”的方法网络开发从未真正停止应用。

现在最终可能会改变,但引用传统观点:网络作者/开发者,因此,反过来,浏览器应该最终决定什么应该(并且不应该)在规范中,当没有充分的理由反对已经在现实。和大多数浏览器长期以来一直支持STYLEBODY(以这种或那种方式;见例如scoped,ATTR),尽管其固有的性能(可能还有其他)的处罚(其中,我们应该决定支付与否,规格)。所以,首先,我会继续押注他们,而不是放弃希望。;)如果WHATWG对他们声称的现实/作者有同样的尊重,他们可能最终会在这里做W3C所做的事情。


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 1460 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信