SASS에는 @extend
선택기가 다른 선택기의 속성을 상속 할 수 있도록 하는 기능이 있지만 속성 (예 : mixins)을 복사하지 않습니다.
LESS에도이 기능이 있습니까?
답변
예, Less.js extend
는 v1.4.0에 도입 되었습니다 .
:extend()
@extend
SASS 및 Stylus에서 사용 하는 at-rule ( ) 구문을 구현하는 대신 LESS는 의사 클래스 구문을 구현하여 LESS의 구현에 선택기 자체에 직접 적용하거나 명령문 내부에 적용 할 수있는 유연성을 제공합니다. 따라서 둘 다 작동합니다.
.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;
}
답변
Less 프레임 워크에서 기능을 확장하는 쉬운 방법
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
.sibling-1();
}
산출
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
color: red
}
참조 https://codepen.io/sprushika/pen/MVZoGB/를