@at-root
该
@at-root
<selector>
{...}
,并导致其中的所有内容都在文档的根部发出,而不是使用正常的嵌套。它最常用于使用 SassScript 父选择器和选择器函数进行高级嵌套时。
例如,假设您要编写一个匹配外部选择器和元素选择器的选择器。您可以编写一个像这样的 mixin,它使用
&
用户的选择器相结合。
scss 语句 | css 语句 |
---|---|
@use "sass:selector"; @mixin unify-parent($child) { @at-root #{selector.unify(&, $child)} { @content; } } .wrapper .field { @include unify-parent("input") { /* ... */ } @include unify-parent("select") { /* ... */ } } |
.wrapper input.field { /* ... */ } .wrapper select.field { /* ... */ } |
该
&
作 SassScript 表达式,它也会自动将外部选择器添加到内部选择器。
@at-root 还可以编写规则以将@at-root{...}
多个样式规则放在文档的根部。其实@at-root <selector> {...}
,只是一个简写@at-root @at-root{ <selector> {...}}
!
超越风格规则
就其本身
@at-root(with:
<rules...>
){...}
或
@at-root(without:
<rules...>
){...}.(without:...)
,查询告诉 Sass ,应该排除哪些规则;(with:...)。查询排除除列出的规则之外的所有规则。
scss 语句 | css 语句 |
---|---|
@media print { .page { width: 8in; |
@media print { .page { width: 8in; } } .page { color: #111; } .page { font-size: 1.2em; } |
除了 at-rules 的名称之外,还有两个可以在查询中使用的特殊值:
- rule指风格规则。例如,@at-root(with: rule)排除所有 at 规则但保留样式规则。
- all指应排除所有 at-rules 和 style 规则。