引用父選擇器需要用到“&”符號
&運算子表示巢狀規則的父選擇器,並且在修改類或偽類選擇器的應用中非常普遍
ul{ li{ &:nth-child(2) a { color: red; &:hover { color: yellow; } } } } //編譯為 ul li:nth-child(2) a { color: red; } ul li:nth-child(2) a:hover { color: yellow; }
&也可以用在其他場景,例如產生重複的類名
.button{ &-submit{ color:blue; } &-click{ color:yellow; } &-btn{ color:red; } } //編譯成 .button-submit { color: blue; } .button-click { color: yellow; } .button-btn { color: red; }
.item{
&1{
color:green;
}
&2{
color:red;
}
}
//編譯成
.item1 {
color: green;
}
.item2 {
color: red;
}
.header{ &>p{ color:red; } &+.content{ color:yellow; } & div{ color:red; } &~p{ color:green; } &&{ color:green; } &>&{ color:blue; } } //編譯成 .header > p { color: red; } .header + .content { color: yellow; } .header div { color: red; } .header ~ p { color: green; } .header.header { color: green; } .header > .header { color: blue; }
還可以改變選擇器的順序,將&後置,將當前的選擇器提到父級
.side{ div&{ color:cyan; } } #side{ div&{ color:green; } } ul{ li{ .item{ div &{ color:orange; } } } } // 編譯為 div.side { color: cyan; } div#side { color: green; } div ul li .item { color: orange; }
當多個同級選擇器用“,”隔開時,其子級使用連續多個&時,例如&+&或&-&等,會生成所有可能的組合
div,p,a,li{ &+&{ color:red; } } //編譯為 div + div, div + p, div + a, div + li, p + div, p + p, p + a, p + li, a + div, a + p, a + a, a + li, li + div, li + p, li + a, li + li { color: red; }