jon*_*ert 152
:extend()
Run Code Online (Sandbox Code Playgroud)
@extendLESS 不是实现SASS和Stylus使用的at-rule()语法,而是实现了伪类语法,它为LESS的实现提供了直接应用于选择器本身或语句内部的灵活性.所以这两个都有效:
.sidenav:extend(.nav) {...}
Run Code Online (Sandbox Code Playgroud)
要么
.sidenav {
&:extend(.nav);
...
}
Run Code Online (Sandbox Code Playgroud)
此外,您还可以使用该all指令扩展"嵌套"类:
.sidenav:extend(.nav all){};
Run Code Online (Sandbox Code Playgroud)
并且您可以添加要扩展的以逗号分隔的类列表:
.global-nav {
&:extend(.navbar, .nav all, .navbar-fixed-top all, .navbar-inverse);
height: 70px;
}
Run Code Online (Sandbox Code Playgroud)
扩展嵌套选择器时,您应该注意到差异:
嵌套选择器.selector1和selector2:
.selector1 {
property1: a;
.selector2 {
property2: b;
}
}
Run Code Online (Sandbox Code Playgroud)
现在.selector3:extend(.selector1 .selector2){};输出:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector3 {
property2: b;
}
Run Code Online (Sandbox Code Playgroud)
,.selector3:extend(.selector1 all){};输出:
.selector1,
.selector3 {
property1: a;
}
.selector1 .selector2,
.selector3 .selector2 {
property2: b;
}
Run Code Online (Sandbox Code Playgroud)
,.selector3:extend(.selector2){};产出
.selector1 {
property1: a;
}
.selector1 .selector2 {
property2: b;
}
Run Code Online (Sandbox Code Playgroud)
最后.selector3:extend(.selector2 all){};:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector1 .selector3 {
property2: b;
}
Run Code Online (Sandbox Code Playgroud)
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
.sibling-1();
}
Run Code Online (Sandbox Code Playgroud)
输出量
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
color: red
}
Run Code Online (Sandbox Code Playgroud)
请参阅https://codepen.io/sprushika/pen/MVZoGB/