在不支持该scoped
属性的浏览器中,这些样式将全局应用.
:scope
伪选择:
除了scoped属性之外,还有可以使用的:scope
伪选择器.此实现提供与前一个相同的支持.
Outside scope.
In scope (green background).
Outside scope.
此选项还增加了可能的优势,即如果浏览器不理解该scoped
属性,则不会全局应用样式.唯一的问题是Safari 7+将识别:scope
伪选择器,即使该scoped
属性不受支持,因此在Safari 7+中丢失了优势.
和以前一样,使用style
不带scoped
属性的标签会创建全局样式,因此只有在包含scoped
属性时才会限定范围.
此时,对该功能的支持看起来很黯淡.仅在Firefox 21+中支持CSS范围.Chrome,Internet Explorer,Safari或Opera目前不支持此功能.根据caniuse.com,从Chrome 20到36,可以通过实验标志启用支持,但删除了支持.
您对规范的解释似乎是正确的.在风格上的标签页MDN包含的描述scoped
属性.
作用域如果存在此属性,则该样式仅适用于其父元素.如果不存在,则样式适用于整个文档.
scope
属性:
这是一个工作示例,仅适用于Firefox 21+.
Out of scope.
In scope (green background).
Out of scope.
似乎"scoped"属性已从HTML5规范中完全删除.目前和之前的几个版本都没有提到它.
这里的许多答案已经过时了,所以这里简要总结一下该scoped
属性的发生情况.
最初(在HTML5之前), Some content here...
它div
有一个id
属性,样式表中的所有规则都明确使用id选择器来确保它们只在该div中应用.当然,这仍然需要避免文档中的id冲突,但唯一性已经是id
属性的要求.
虽然该scoped
属性被删除,但这种方法可以完成工作,具有合理的可读性(当然,像任何代码一样,它可以被混淆,但这不是重点),应该验证,并且应该适用于几乎所有与CSS兼容的浏览器.
PS:根据规范,内部
应验证.然而,Nu验证器(标记为实验性)仍然抱怨它.有一个未解决的问题:https://github.com/validator/validator/issues/489