@at-root
を使うとこのようにネストを解除できます。
input.scss
.foo {
color: red;
@at-root .bar {
color: blue;
}
}
output.css
.foo {
color: red;
}
.bar {
color: blue;
}
しかし、&で名前を持って来たりするときには@at-root
を書く必要はありません。
input.scss
.foo {
color: red;
&-bar {
color: blue;
&-baz {
color: green;
}
}
}
output.css
.foo {
color: red;
}
.foo-bar {
color: blue;
}
.foo-bar-baz {
color: green;
}
これはBEM記法などでとても役に立ちます(僕はつい先日までいちいち@at-root
を書いてしまっていました)。
ちなみに、インターポレーション(#{}
)を使うとネストされるようです。
input.scss
.foo {
color: red;
#{&}-bar {
color: blue;
}
}
output.css
.foo {
color: red;
}
.foo .foo-bar {
color: blue;
}