Chuỗi liên kết trong Ít


129

Tôi nghĩ rằng điều này là không thể, nhưng tôi nghĩ tôi hỏi trong trường hợp có một cách. Ý tưởng là tôi có một biến cho đường dẫn đến thư mục tài nguyên web:

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

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

Tôi nhận được điều này là kết quả:

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

Nhưng, tôi muốn các chuỗi kết hợp thành một chuỗi như thế này:

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

Có thể nối các chuỗi với nhau trong Ít hơn không?

Câu trả lời:


225

Sử dụng phép nội suy biến :

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

Mã đầy đủ:

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

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

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

Cảm ơn câu trả lời! Đây là hoàn hảo. Bây giờ tôi có thể chắc chắn rằng ngay cả khi đường dẫn bối cảnh thay đổi, sẽ không có cơn ác mộng tái cấu trúc.
juminoz

Cảm ơn, tôi đã gặp vấn đề tương tự và bỏ lỡ điều đó trong các tài liệu.
David

Cảm ơn @Paulpro! Tôi đã gặp sự cố với tiện ích bổ trợ VS Web Compiler, nơi nó đang thay đổi url hình nền của tôi và tôi không chắc chắn làm thế nào để thực hiện ghép nối :)
Hatsrumandcode

6
Chỉ là một lưu ý cho những người có thể đáp ứng câu trả lời này nhưng đang cố gắng sử dụng nó, ví dụ như để kết hợp một biến số với một chuỗi như pxhoặc %: Bạn có thể hủy trích dẫn chuỗi bằng cách chờ xử lý trước bằng dấu ngã ~, chẳng hạn như:width: ~"@{w}px";
AsoodAsItGets

29

Như bạn có thể thấy trong tài liệu , bạn cũng có thể sử dụng phép nội suy chuỗi với các chuỗi biến và đơn giản cùng nhau:

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

12

Tôi đã tìm kiếm cùng một mẹo để xử lý hình ảnh. Tôi đã sử dụng một mixin để trả lời điều này:

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

Sau đó, bạn có thể sử dụng:

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

hoặc là

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

Xin chào và chào mừng! Tại sao bạn nghĩ rằng câu trả lời được chấp nhận không còn giá trị? nó đã lỗi thời? đã có một cải tiến công nghệ? Nó sai? tại sao của bạn là tốt hơn?
STT LCU

9

Đối với những giá trị đơn vị giống như chuỗi như 45degtrong transform: rotate(45deg)sử dụng unit(value, suffix)hàm. Thí dụ:

// 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
Không trả lời về mặt kỹ thuật câu hỏi, nhưng vẫn là một mẹo hữu ích.
phân tích


-7

Sử dụng Drupal 7. Tôi đã sử dụng dấu cộng thông thường và nó hoạt động:

@images_path+'bg.png'

5
Trừ khi anh ta sẵn sàng học Drupal chỉ để các chuỗi concat sử dụng nó trong LESS / CSS, tôi nghĩ rằng đề xuất của bạn là vô giá trị. Không xúc phạm, tôi chỉ nói.
ozanmuyes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.