HTML5 中样式元素的“scoped”属性当前状态如何?

2023-11-29

这里说明了http://www.w3.org/TR/html-markup/style.html#style:

允许的父元素

任何可以包含元数据元素、div、noscript 的元素, 节、文章、旁白

that <style>或多或少地允许在任何地方(其中<div>被允许) 但是,另一方面,我在这里找到了更详细的信息http://www.w3.org/TR/2012/WD-html5-20121025/the-style-element.html#attr-style-scoped

可以使用该元素的上下文:(注释:样式)

If the scoped attribute is absent: where metadata content is expected.
If the scoped attribute is absent: in a noscript element that is a child of a head element.
If the scoped attribute is present: where flow content is expected, but before any other flow content other than inter-element whitespace, and not as the child of an element whose content model is transparent.

以及本文档后面的内容:

作用域属性是一个布尔属性。如果存在,则表明 这些样式仅适用于以该样式为根的子树 元素的父元素,而不是整个文档。

如果存在范围属性并且该元素有父元素 元素,则样式元素必须是流内容的第一个节点 在其父元素中(元素间空白除外),并且 父元素的内容模型不得具有透明组件。

这读起来就像有(或将有)“两种不同的<style>元素”:a

  • <style>- 全局 - ~~仅在内部<head>
  • <"scopestyle">- only(!) 带有 bool 范围 attr 和 ~~only 在开头<div>

(请将“~~”读作“或多或少”)

但后面的链接已经有2年多了,所有浏览器(我测试了Chrome、FF、IE、Opera)都解释了流入<style>就像它在标题中一样。 (并忽略据我所知范围 - 是的 - 仍然没有标准)

所以我的问题由三部分组成

  1. 我对 W3C 文档的解释(两种风格 - 逻辑)正确吗?

  2. 2015年现在是什么状态?

  3. 而且,是否可能有人知道即将发生什么?


这里的许多答案已经有些过时了,所以这里简要总结了发生的事情scoped属性。

最初(HTML5之前),<style>在外部无效<head>,但大多数或所有浏览器都支持。 “无效”意味着验证者会抱怨它,并且规范(W3C 的 HTML 4 和 XHTML 1 系列)表示不应该这样做。但它奏效了。有时这很糟糕:无论在哪里<style>元素出现在文档中,其规则将适用于整个文档(当然基于所使用的选择器)。这可能会导致作者编写“本地”样式表,该样式表仅适用于文档的某个区域,但可能会意外地重新设置其他区域的样式。

HTML5's scoped属性提案旨在解决这个问题:它会告诉浏览器该工作表中的样式仅适用于<style>的父元素及其后代。另外,在某个时刻<style scoped>还需要成为其父级的第一个子级,这使得任何阅读 HTML 代码的人都可以清楚地了解范围是什么。这style没有该属性的元素仅在<head>元素。

随着时间的推移,没有足够多的供应商实现这一新功能(Firefox 和 Chrome 包含了一些实验性支持),因此它最终被放弃。浏览器行为仍然与 HTML 5 之前一样,但当前规范至少记录了它:<style>现在在整个文档中都是合法/有效的,但规范警告了潜在的副作用(意外地重新设计元素)。

根据当前的规范和浏览器行为,实现“作用域”样式的最佳且最安全的方法是在 ID 的帮助下明确执行此操作,如以下代码片段所示:

<div id="myDiv">
  <style>
    #myDiv p { margin: 1em 0; }
    #myDiv em { color: #900; }
    #myDiv whatever { /* ... */ }
  </style>
  <p>Some content here... </p>
</div>

The div has an id属性,并且样式表中的所有规则显式使用 id 选择器来确保它们仅适用于该 div 内。当然,这仍然需要避免整个文档中的 id 冲突,但是唯一性已经是id属性。

虽然scoped属性被删除,这种方法可以完成工作,具有相当的可读性(当然,像任何代码一样,它可能会被混淆,但这不是重点),应该验证,并且应该适用于几乎所有 CSS 兼容的浏览器。

PS:根据规范,<style> within <body>应该验证。然而,Nu 验证器(标记为实验性)仍然对此抱怨。关于此有一个悬而未决的问题:https://github.com/validator/validator/issues/489

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 中样式元素的“scoped”属性当前状态如何? 的相关文章

  • 缩小 HTML、CSS 和 Javascript 是一个坏主意吗?

    维基百科定义缩小 http en wikipedia org wiki Minification 28programming 29 as 从源代码中删除所有不必要的字符而不改变其功能的过程 这些不必要的字符通常包括空格字符 换行符 注释 有
  • 如何使用 :nth-child() 选择所有子项中的所有其他

    我正在开发一个评论系统 我需要拥有其他所有孩子 div 甚至是第一个孩子的孩子 用 CSS 选择 例如 假设我有这个标记 为了简单起见 省略了不需要的结束标签 div class comment div class comment div
  • 如何更改 Bootstrap 导航栏折叠断点

    目前 当浏览器宽度低于 768px 时 导航栏将更改为折叠模式 我想将此宽度更改为 1000px 这样当浏览器低于 1000px 时 导航栏就会更改为折叠模式 我想在不使用 LESS 的情况下执行此操作 我使用的是手写笔而不是 LESS 我
  • 使用 bootstrap 将并排的网格位置交换到顶部和底部

    我有两个 div 内容和图像 它们在中等屏幕中并排放置 col md 6 内容 col md 4 图片 因此 当屏幕尺寸更改为小屏幕和 xs 屏幕时 这些 div 不应该并排放置 它们应该像这样顶部和底部对齐 image content 这
  • 设置列表中前 10 项的样式

    可以使用像 li nth child 这样的东西来设置列表中前十项的样式吗 ol li item 1 li li item 2 li li item 3 li li item 4 li li item 5 li li item 6 li l
  • html 链接不起作用 href javascript 参数太长

    a href alt a 在 href 中我调用了一个 javascript 函数 change 第二个参数 n1387519869249 1196 n1387519906965 1368 n 是一个非常长的值 大约 5070 个字符 但在
  • 与 PHP 相比,Python 与 HTML 的“流畅”程度如何?

    我正在考虑从使用 PHP 切换到使用 Python 来开发 Web 应用程序 但我想知道 Python 是否像 PHP 一样擅长在 HTML 中穿插 本质上 我发现它使用起来非常简单 直观将 PHP 放在我想要的位置 然后可以随意安排 组织
  • CSS 聚焦于出现的输入 div [重复]

    这个问题在这里已经有答案了 我有这样的代码 div class lighter div
  • 如何在浏览器上使用样式组件 CDN 构建?

    索引 html 我从以下位置获取 CDN 文件 我怎样才能访问styled功能 const styled window styled components不起作用 对于版本 5 如docs https styled components c
  • 使用 VSCode 的 EJS 文件缩进错误

    我在 VSCode 上遇到 EJS 文件问题 每次保存文件时 格式化程序都会应用错误的缩进 在每个 EJS 标识符下方 下一行向右移动 缺少正确的垂直对齐 我使用 ejs 的 HTML 格式并安装了 DigitalBrainstem 的 E
  • 无需重定向的 HTML 页面提交

    有没有什么方法可以在不使用ajax的情况下提交html表单而无需从当前页面重定向 你可以设置一个target 为您form 这样您就可以将表单提交到新选项卡 target blank 或一个小的 隐藏的iframe target nameo
  • 如何使用 HTML 和 CSS 在我的网站上显示社交图标?

    我拼命尝试向我的网站添加一些图标 但无法让它们正确显示 我想要的只是一个包含图像并在线显示它们的容器 然后我想在该容器和图像之间添加一些填充 仅此而已 看这里我的方法 如果有人可以帮助我并纠正我的代码 使其真正有效 我会非常高兴 在我的 H
  • @fontface - 禅宗购物车中的 403 禁止错误

    我不确定这是否是发布此内容的正确位置 因为我不知道问题出在哪里 基本上 字体现在对我来说真的很痛苦 而且没有任何效果 我尝试从 google fonts 加载字体 但遇到了 IE 问题 所以我决定下载它们并自己提供服务 但现在它无法在任何浏
  • 带有覆盖CSS的背景图像

    我如何在 CSS 中设计带有叠加层的背景图像 就像这个示例图像一样 这是代码 我想添加tour类到背景图像和叠加效果 div class tour div class container div class row div class co
  • 仅使用 HTML 和 CSS 制作弧形帆形状?

    是否可以仅使用 HTML 和 CSS 创建下面的弧形帆形状 我可以看到从这个答案 https stackoverflow com questions 7073484 how does this css triangle shape work
  • 当 Chrome 中嵌套滚动中的数据更改时防止页面滚动

    我在页面中有一个固定大小的元素 带有 溢出 滚动 其内容经常更改 我预计该元素内部发生的更改会影响该元素的滚动 但不会影响页面滚动 但是当这个元素位于页面顶部时 页面本身开始滚动 我怎样才能防止这种情况发生 要重现此行为 我在 chrome
  • CSS以两种颜色显示一个字符[重复]

    这个问题在这里已经有答案了 css中是否可以用两种颜色制作单个字符 我的意思是例如字符 B 上半部分为红色 下半部分为蓝色 h1 font size 72px background webkit linear gradient red 49
  • 如何在 HTML 中将文本设置为粗体?

    我正在尝试使用 HTML 将一些文本加粗 但我很难让它发挥作用 这就是我正在尝试的 Some
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 如何计算一行中Flexbox项目的数量?

    网格是使用 CSS flexbox 实现的 Example http jsbin com jumosicasi edit html css js output 本示例中的行数为 4 因为我出于演示目的固定了容器宽度 但是 实际上 它可以根据

随机推荐

  • 解码 Azure 移动服务 JWT 令牌时出现 JwtSecurityToken 异常

    以下代码 using System IdentityModel Tokens JwtSecurityToken jwtSecurityToken new JwtSecurityToken rawToken 生成以下异常 Jwt10113 U
  • 如何按升序对包含星期几名称的字符串进行排序

    我有一个包含星期几名称 开始时间和结束时间的字符串列表 List
  • 为什么 Ping 超时无法正常工作?

    我有 5 台电脑 我想 ping 这台电脑是否可用 所以我使用 C Ping 类 两台电脑可用 但当我对它们执行 ping 操作时 另外 3 台电脑已关闭 我的程序等待至少 7 秒才能响应 我只想检查 1000 毫秒并返回 OK 或 ERR
  • 如何从 Kotlin 资源中读取文本文件?

    我想用 Kotlin 编写 Spek 测试 如何从 HTML 文件中读取src test resources folder class MySpec Spek describe blah blah given blah blah var f
  • 如何确定 swf 是独立播放还是在其他 swf 中加载?

    我有两个 swf 一种某种 节目 以及一个充当 节目 加载程序的 菜单 show swf 可以以其自身的方式运行 或者通过 菜单 加载 有没有办法确定 显示 是独立运行还是加载到 菜单 中 一种解决方案是提供 菜单 Loader对象在加载的
  • 在 Dart 中将子类分配给工厂构造函数

    The KeyFlutter 中的类有一个factory构造函数更像是一个变量 abstract class Key const factory Key String value ValueKey
  • 有没有办法在 SQL Server 中获取自定义格式的日期?

    在 Oracle 中 您可以使用 SELECT to char sysdate yyyy mm FROM dual 仅显示日期的年份和月份部分 此外 您还可以设置NLS DATE FORMAT更改默认返回日期的方式 我知道在 SQL Ser
  • 打开图元标签

    我使用 Facebook 应用程序 shortstack 来制作我的页面 当我使用短 URL 共享出版物时 我想对其进行个性化 我已经测试创建开放图元标记 但它不起作用 您需要在页面中添加 opengraph 元标记 例如
  • android 支持 v14 PreferenceFragment 崩溃

    我正在尝试使用 PreferenceFragment 在 Android 应用程序中显示设置android support v14 preference图书馆 但是 当我尝试打开首选项时 应用程序崩溃并出现奇怪的 NullPointerEx
  • 扩展 UserCreationForm 以包含电子邮件、名字和姓氏

    我已经被困在这个问题上有一段时间了 似乎无法弄清楚发生了什么 我刚刚开始学习 Django 我设置了登录 现在想要实现一个注册页面 我首先使用 UserCreationForm 表单 效果很好 但我想添加电子邮件 名字和姓氏字段 我想我可以
  • 为什么在 C++/Java 和类似语言中以美元符号开头的变量名不好?

    为什么在 C Java 和 PHP 中的类似变量名中以美元符号开头是不好的 编辑 有什么风险吗 在Java中 使用 in 变量是合法的 但绝对是一个坏主意 如果这样做 则存在意外使用与编译器本身或某些代码生成器使用的名称冲突的名称的风险 结
  • Firebase 在大数据集上的性能

    我正在为一个项目测试 firebase 该项目可能有相当多的密钥 可能有数百万个 我已经测试过使用节点加载几万条记录 加载性能看起来不错 然而 如果我展开根节点 FORGE Web UI 会变得极其缓慢 并且会渲染每条记录 Firebase
  • 将属性注册为 DependencyProperty

    我有一个名为 ChartView 的用户控件 我有一个 ObservableCollection 类型的属性 我已经在 ChartView 中实现了 INotifyPropertyChanged ChartEntry 的代码是 public
  • 获取 popover 的 data-content 内 HTML 标签的元素

    我正在 Bootstrap3 的 popover 中工作 我在这里放置了如下 HTML 内容 a href class btn title Test Click Here a 我无法引用 data content 属性中存在的 html 元
  • boost binary_oarchive 对于不同的编译器的工作方式不同

    我需要在客户端和服务器之间传输数据 当我将服务器从 Windows msvc140 移动到 Debian gcc 64 位 时 我的字节流类出现了问题boost 他们的档案是不同的 include
  • 如何使用 iText 将图形绘制为 PDF?

    我正在尝试完成一个绘制图形并将其写入 PDF 的示例 但我不断收到 PDF 没有页面的错误 如果我在打开后使用 document add 添加一些简单的东西 它工作正常 我只是永远看不到图形 这是我的代码 Document document
  • 用contentResolver删除短信太慢

    我想删除手机上的所有短信 除了每次对话的最后 500 条短信 这是我的代码 但速度非常慢 删除一条短信大约需要 10 秒 我如何加速这段代码 ContentResolver cr getContentResolver Uri uriConv
  • 简单的 ImageView 颜色动画

    您好 我对 Android 比较陌生 如果可能的话 我希望获得一些关于在哪里搜索以解决我的问题的指南或建议 显然 我不具备发布图像的声誉 因此我会尽力解释它 假设我有一个空瓶子 一旦调用这个片段 活动 我想引入一个动画 它将逐渐垂直地 从下
  • 从列表中获取 min() 和 max() 的有效方法? [复制]

    这个问题在这里已经有答案了 我的问题来自发布到的答案如何在python 3中找到任意列表中缺失的数字 大多数解决方案建议使用类似的东西 a 10 12 13 8 get set of full numbers allNums set x f
  • HTML5 中样式元素的“scoped”属性当前状态如何?

    这里说明了http www w3 org TR html markup style html style 允许的父元素 任何可以包含元数据元素 div noscript 的元素 节 文章 旁白 that