CSS @scope 规则
定义和用法
CSS @scope
规则允许您选择特定 DOM 子树中的元素。
通过此 @ 规则,您可以精确地定位元素,而无需编写过于具体的选择器。
此 @ 规则还减少了选择器与 DOM 结构之间的耦合。
实例
例子 1
在这里,我们使用两个独立的 @scope
块来匹配 .ex1 类和 .ex2 类中的 <a> 元素。:scope 用于选择和设置作用域根本身的样式。在此示例中,作用域根是应用了类的 <div> 元素:
@scope (.ex1) { :scope { background-color: salmon; padding: 10px; } a { color: maroon; } a:hover { color: blue; } } @scope (.ex2) { :scope { background-color: beige; padding: 10px; } a { color: green; } }
查看以下 HTML:
<div class="container"> <div class="news"> <h2>Some header</h2> <img src="example.jpg" alt="Some image"> </div> </div>
这里有一些嵌套的 <div> 元素,如果我们想为上述 container/news 部分中的 <h2> 和 <img> 元素设置样式,则必须编写以下内容(不使用 @scope):
例子 2
.container .news h2 { color: green; } .container .news img { border: 2px solid maroon; }
使用 @scope
规则,您可以精确地定位元素,而无需编写过于复杂的选择器,如下所示:
例子 3
在这里,我们仅针对 .container 组件中的 <h2> 和 <img> 元素,将 .container 设置为 @scope 规则的根作用域:
@scope (.container) { h2 { font-size: 30px; color: green; } img { border: 5px solid maroon; } }
@scope
规则包含一个或多个规则集,可以通过两种方式使用:
- 作为 CSS 中的独立块,在这种情况下,它包含一个前导部分,其中包括作用域根和可选的作用域限制选择器——这些定义了作用域的上下边界。
- 作为 HTML 中 <style> 元素内的行内样式,在这种情况下,前导部分被省略,并且包含的规则集会自动作用到 <style> 元素的父元素。
例子 4
“甜甜圈作用域”仅针对位于祖先树中两个元素之间的元素。这是例子:
@scope (.container) to (.news) { h2 { font-size: 30px; color: green; } img { border: 5px solid maroon; } }
CSS 语法
@scope (作用域根) { 规则集 }
或者
/* 甜甜圈作用域 */ @scope (作用域根) to (作用域限制) { 规则集 }
浏览器支持
表格中的数字表示首个完全支持该 @ 规则的浏览器版本。
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
118 | 118 | 不支持 | 17.4 | 104 |