@at-root
The @at-root
directive causes one or more rules to be emitted at the root of the document, rather than being nested beneath their parent selectors. It can either be used with a single inline selector:
.parent {
...
@at-root .child { ... }
}
Which would produce:
.parent { ... }
.child { ... }
Or it can be used with a block containing multiple selectors:
.parent {
...
@at-root {
.child1 { ... }
.child2 { ... }
}
.step-child { ... }
}
Which would output the following:
.parent { ... }
.child1 { ... }
.child2 { ... }
.parent .step-child { ... }
@at-root (without: ...)
and @at-root (with: ...)
By default, @at-root
just excludes selectors. However, it’s also possible to use @at-root
to move outside of nested directives such as @media
as well. For example:
@media print {
.page {
width: 8in;
@at-root (without: media) {
color: red;
}
}
}
produces:
@media print {
.page {
width: 8in;
}
}
.page {
color: red;
}
You can use @at-root (without: ...)
to move outside of any directive. You can also do it with multiple directives separated by a space: @at-root (without: media supports)
moves outside of both @media
and @supports
queries.
There are two special values you can pass to @at-root
. “rule” refers to normal CSS rules; @at-root (without: rule)
is the same as @at-root
with no query. @at-root (without: all)
means that the styles should be moved outside of all directives and CSS rules.
If you want to specify which directives or rules to include, rather than listing which ones should be excluded, you can use with
instead of without
. For example, @at-root (with: rule)
will move outside of all directives, but will preserve any CSS rules.
Please login to continue.