LESS'in "genişletme" özelliği var mı?


96

SASS, bir @extendseç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?


Açıklık getirmek için, diğer soru referansları aynı şeyi SORMAZ. Bu soru basittir: "LESS'in genişletme özelliği var mı?". Diğer soru, stil kararlarıyla ilgili çok daha fazla düşünmeyi gerektiren bir şey sormaktır.
— jonschlinkert

... son yorumuma eklemek gerekirse, diğer soru, benim görüşümü daha da destekleyen "kodlama stili" etiketini içeriyor.
— jonschlinkert

Yanıtlar:


158

Evet, Less.js tanıtıldı extendiçinde v1.4.0 .

:extend()

@extendSASS 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, allyö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 .selector1ve 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;
}

15
"LESS'in sözdizimi, @extendtipik 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.
— cimmanon


2
@cimmanon Sanırım haklısın, bu şekilde ses çıkarmak istemedim. Ancak Less'in sözdizimi hakkında pek çok tartışma var, çünkü görünüşe göre insanlar Less'in SASS ile aynı sözdizimini kullanmasını beklediler. Ancak CSS'de, pseuso-seçiciler belge ağacındaki öğelere hangi stil kurallarının uygulanacağını belirlemek için örüntü eşleştirme kuralları için kullanılırken, at-kuralları "daha yüksek düzey" yönergeler için kullanılır (bahsettiğim gibi). Öyleyse, bu ayrıntıyı sağlamak için yanıtı düzenlemeliyim? Yoksa şu başka bir soru mu: "LESS neden sözde seçici sözdizimini seçti?"
— jonschlinkert

4
Daha az dokümantasyonu çevrimiçi olarak güncellemelisiniz, hakkında hiçbir şey göremiyorum: extended () ve daha önce bilmek iyi olurdu
— Joshua Bambrick

2
Belgeler, kodda olduğu gibi topluluk tarafından korunur. Bu tür önerilerin gerçek
— depoda

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.