在Less中连接字符串

jum*_*noz 125 css concat path less web

我认为这是不可能的,但我想如果有办法,我会问.我的想法是我有一个变量用于web资源文件夹的路径:

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

.px {
    background-image: url(@url);
}
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果:

.px { background-image: url("../img/" "test.css"); }
Run Code Online (Sandbox Code Playgroud)

但是,我希望字符串组合成一个字符串,如下所示:

.px { background-image: url("../img/test.css"); }
Run Code Online (Sandbox Code Playgroud)

是否可以在Less中将字符串连接在一起?

Pau*_*aul 217

使用可变插值:

@url: "@{root}@{file}";
Run Code Online (Sandbox Code Playgroud)

完整代码:

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

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

.px{ background-image: url(@url); }
Run Code Online (Sandbox Code Playgroud)

  • 对于那些可能会依赖此答案但正在尝试使用它的人来说只是一个注释,例如将数字变量与像`px`或`%`这样的字符串组合在一起:您可以通过使用波浪号预先挂起它来取消引用该字符串`~`,如下:`width:〜"@ {w} px";` (6认同)

Ste*_*yer 29

正如您在文档中看到的那样,您可以将字符串插值与变量和纯字符串一起使用:

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


小智 12

我正在寻找处理图像的相同技巧.我用mixin来回答这个问题:

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

然后你可以使用:

.px{
    .bg-img("dot.png");
}
Run Code Online (Sandbox Code Playgroud)

要么

.px{
    .bg-img("dot.png","red");
}
Run Code Online (Sandbox Code Playgroud)


jor*_*anb 9

对于那些线状单元值像45degtransform: rotate(45deg)使用unit(value, suffix)功能.例:

// 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);
Run Code Online (Sandbox Code Playgroud)


Fel*_*Als 7

不知道你是使用less.js还是lessphp(比如在WordPress的WP-Less插件中)但是使用lessphp你可以"取消引用"字符串~:http://leafo.net/lessphp/docs/#string_unquoting