SASSには@extend
と呼ばれる機能があり、セレクターは別のセレクターのプロパティを継承できますが、プロパティをコピーすることはありません(ミックスインなど)。
LESSにもこの機能がありますか?
はい、Less.jsが導入されました extend
in v1.4. .
:extend()
LESSは、SASSおよびStylusで使用されるat-rule(@extend
)構文を実装するのではなく、疑似クラス構文を実装しました。したがって、これらの両方が機能します:
.sidenav:extend(.nav) {...}
または
.sidenav {
&:extend(.nav);
...
}
さらに、all
ディレクティブを使用して、「ネストされた」クラスを拡張することもできます。
.sidenav:extend(.nav all){};
そして、拡張したいクラスのコンマ区切りリストを追加できます:
.global-nav {
&:extend(.navbar, .nav all, .navbar-fixed-top all, .navbar-inverse);
height: 70px;
}
ネストされたセレクターを拡張する場合、違いに注意する必要があります。
ネストされたセレクタ.selector1
およびselector2
:
.selector1 {
property1: a;
.selector2 {
property2: b;
}
}
現在.selector3:extend(.selector1 .selector2){};
出力:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector3 {
property2: b;
}
、.selector3:extend(.selector1 all){};
出力:
.selector1,
.selector3 {
property1: a;
}
.selector1 .selector2,
.selector3 .selector2 {
property2: b;
}
、.selector3:extend(.selector2){};
出力
.selector1 {
property1: a;
}
.selector1 .selector2 {
property2: b;
}
そして最後に.selector3:extend(.selector2 all){};
:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector1 .selector3 {
property2: b;
}
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
.sibling-1();
}
出力
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
color: red
}