與根目錄巢狀
巢狀可能最常用於建立更具體的選擇器,但它也可以僅用於程式碼組織。使用 @at-root
指令,你可以跳出你在 Sass 中巢狀它的位置,讓你回到頂層。這樣做可以讓你保持樣式分組,而不會建立比你需要的更多的特異性。
例如,你可以這樣:
.item {
color: #333;
@at-root {
.item-wrapper {
color: #666;
img {
width: 100%;
}
}
}
.item-child {
background-color: #555;
}
}
這將編譯為:
.item {
color: #333;
}
.item-wrapper {
color: #666;
}
.item-wrapper img {
width: 100%;
}
.item .item-child {
background-color: #555;
}
通過這樣做,我們所有與 .item
類相關的樣式都在 SCSS 中,但是我們不一定在每個選擇器中都需要該類。
排除背景
預設情況下,@at-root
中的宣告將出現在任何上下文中。這意味著例如 @media
塊內的規則將保留在那裡。
@media print {
.item-wrapper {
@at-root {
.item {
background: white;
}
}
}
}
// Will compile to
@media print {
.item {
background: white;
}
}
這並不總是需要的行為,因此你可以通過將 media
傳遞給 @at-root
指令的 without
選項來排除媒體上下文。
@at-root (without: media) {..
有關更多資訊,請參閱官方文件