[css] LESS에 “확장”기능이 있습니까?

SASS에는 @extend선택기가 다른 선택기의 속성을 상속 할 수 있도록 하는 기능이 있지만 속성 (예 : mixins)을 복사하지 않습니다.

LESS에도이 기능이 있습니까?



답변

예, Less.js extendv1.4.0에 도입 되었습니다 .

:extend()

@extendSASS 및 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;
}

중첩 된 선택자를 확장 할 때 차이점을 확인해야합니다.

중첩 된 선택기 .selector1selector2:

.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/를


답변