Dizeleri daha az birleştirme


129

Bunun mümkün olmadığını düşünüyorum ama bir yolu olabilir diye sorduğumu düşündüm. Buradaki fikir, web kaynak klasörüne giden yol için bir değişkenim olmasıdır:

@root: "../img/";
@file: "test.css";
@url: @root@file;

.px {
    background-image: url(@url);
}

Bunu sonuç olarak anlıyorum:

.px { background-image: url("../img/" "test.css"); }

Ama dizelerin şu şekilde tek bir dizede birleşmesini istiyorum:

.px { background-image: url("../img/test.css"); }

Less'de dizeleri bir araya getirmek mümkün mü?

Yanıtlar:


225

Değişken Enterpolasyon Kullan :

@url: "@{root}@{file}";

Tam kod:

@root: "../img/";
@file: "test.css";

@url: "@{root}@{file}";

.px{ background-image: url(@url); }

Cevap için teşekkürler! Bu harika. Artık bağlam yolu değişse bile, yeniden düzenleme kabusu olmayacağından emin olabilirim.
juminoz

Teşekkürler, az önce aynı problemle karşılaştım ve bunu belgelerde gözden kaçırdım.
David

Teşekkürler @Paulpro! VS Web Compiler eklentisiyle ilgili bir sorun yaşıyordum, arka plan resmi
url'mi değiştiriyordum ve

6
Bu yanıta gelebilecek ancak onu, örneğin bir sayısal değişkeni pxveya gibi bir dizeyle birleştirmeye çalışan kişiler için sadece bir not : %~width: ~"@{w}px";
Dizeyi

29

Dokümantasyonda görebileceğiniz gibi, dize enterpolasyonunu değişken ve düz dizelerle birlikte de kullanabilirsiniz:

@base-url: "http://assets.fnord.com";
background-image: url("@{base-url}/images/bg.png");

12

Görüntüleri işlemek için aynı numarayı arıyordum. Buna cevap vermek için bir mixin kullandım:

.bg-img(@img-name,@color:"black"){
    @base-path:~"./images/@{color}/";
    background-image: url("@{base-path}@{img-name}");
}

O zaman şunları kullanabilirsiniz:

.px{
    .bg-img("dot.png");
}

veya

.px{
    .bg-img("dot.png","red");
}

Merhaba ve hoşgeldin! neden kabul edilen cevabın artık geçerli olmadığını düşünüyorsunuz? modası geçmiş mi? teknolojik bir gelişme oldu mu? Yanlış? neden seninki daha iyi
STT LCU

9

Gibilerin birimin dize benzeri değerler için 45degde transform: rotate(45deg)kullanıma unit(value, suffix)fonksiyonu. Misal:

// Mixin
.rotate(@deg) {
  @rotation: unit(@deg, deg);
  -ms-transform: rotate(@rotation);
  transform: rotate(@rotation);
}

// Usage
.rotate(45);

// Output
-ms-transform: rotate(45deg);
transform: rotate(45deg);

1
Teknik olarak soruya cevap vermiyor ama yine de faydalı bir numara.
trysis


-7

Drupal 7 kullanıyorum. Sıradan bir artı işareti kullandım ve işe yarıyor:

@images_path+'bg.png'

5
Drupal'ı LESS / CSS'de kullanmak için sadece concat dizeleri için isteyerek öğrenmediği sürece, önerinizin değersiz olduğunu düşünüyorum. Alınma, sadece söylüyorum.
ozanmuyes
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.