2012-04-21 29 views
116

Tôi nghĩ rằng điều này là không thể, nhưng tôi nghĩ rằng tôi yêu cầu 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:Chuỗi liên kết trong ít

@root: "../img/"; 
@file: "test.css"; 
@url: @[email protected]; 

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

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

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

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

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

Có thể ghép các chuỗi lại với nhau trong Ít hơn không?

Trả lời

201

Sử dụng Variable Interpolation:

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

Toàn mã:

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

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

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

Cảm ơn bạn đã 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 con đường ngữ cảnh thay đổi, sẽ không có một cơn ác mộng tái cấu trúc. – juminoz

+0

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

+0

Cảm ơn @Paulpro! Tôi đã gặp sự cố với tiện ích bổ sung VS Web Compiler, nơi nó thay đổi url hình nền của tôi và tôi không chắc chắn cách liên kết :) –

7

Không biết nếu bạn đang sử dụng less.js hoặc lessphp (như trong WP-Less plugin cho WordPress) nhưng với lessphp bạn có thể " unquote "strings with ~: http://leafo.net/lessphp/docs/#string_unquoting

+1

Điều này cũng hoạt động với LESS thông thường. Tôi không biết nếu nó đã làm vào năm 2012 khi câu trả lời này đã được viết. – trysis

-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 ông sẵn sàng học Drupal chỉ cho 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 có hành vi phạm tội, tôi chỉ nói. – ozanmuyes

11

Tôi đang 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 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

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

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 chưa? đã có cải tiến công nghệ chưa? Nó sai? tại sao bạn tốt hơn? –

29

Như bạn có thể nhìn thấy trong documentation, bạn có thể sử dụng chuỗi suy cũng với các chuỗi biến và đồng đều với nhau:

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

Đối với các giá trị đơn vị giống như chuỗi như 45deg trong transform: rotate(45deg), hãy sử dụng chức năng unit(value, suffix). Ví 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); 
+0

Về mặt kỹ thuật không trả lời câu hỏi, nhưng vẫn là một mẹo hữu ích. – trysis

Các vấn đề liên quan