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.