SASS, bir @extend
seçicinin başka bir seçicinin özelliklerini, ancak özellikleri kopyalamadan (mixins gibi) devralmasına izin veren bir özelliğe sahiptir .
LESS de bu özelliğe sahip mi?
SASS, bir @extend
seçicinin başka bir seçicinin özelliklerini, ancak özellikleri kopyalamadan (mixins gibi) devralmasına izin veren bir özelliğe sahiptir .
LESS de bu özelliğe sahip mi?
Yanıtlar:
Evet, Less.js tanıtıldı extend
içinde v1.4.0 .
:extend()
@extend
SASS ve Stylus tarafından kullanılan at-rule ( ) sözdizimini uygulamak yerine , LESS sözde sınıf sözdizimini uyguladı, bu da LESS uygulamasına ya doğrudan bir seçicinin kendisine ya da bir deyimin içinde uygulanma esnekliği verdi. Yani bunların ikisi de işe yarayacak:
.sidenav:extend(.nav) {...}
veya
.sidenav {
&:extend(.nav);
...
}
Ek olarak, all
yönergeyi "iç içe geçmiş" sınıfları genişletmek için de kullanabilirsiniz :
.sidenav:extend(.nav all){};
Ve uzatmak istediğiniz virgülle ayrılmış bir sınıf listesi ekleyebilirsiniz:
.global-nav {
&:extend(.navbar, .nav all, .navbar-fixed-top all, .navbar-inverse);
height: 70px;
}
İç içe geçmiş seçicileri genişletirken, farklılıkları fark etmelisiniz:
iç içe geçmiş seçiciler .selector1
ve selector2
:
.selector1 {
property1: a;
.selector2 {
property2: b;
}
}
Şimdi .selector3:extend(.selector1 .selector2){};
çıktılar:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector3 {
property2: b;
}
, .selector3:extend(.selector1 all){};
çıktılar:
.selector1,
.selector3 {
property1: a;
}
.selector1 .selector2,
.selector3 .selector2 {
property2: b;
}
, .selector3:extend(.selector2){};
çıktılar
.selector1 {
property1: a;
}
.selector1 .selector2 {
property2: b;
}
ve son olarak .selector3:extend(.selector2 all){};
:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector1 .selector3 {
property2: b;
}
@extend
tipik olarak tarayıcıdaki CSS ayrıştırıcısına talimatlar veya yönergeler vermek için ayrılmış olan SASS ve Stylus tarafından uygulanan at-rule ( ) sözdiziminden daha" geleneksel CSS'ye "daha" sadıktır " ." <- bu ne anlama geliyor? Pazarlama konuşması gibi kokuyor.
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
.sibling-1();
}
Çıktı
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
color: red
}