在Less中连接字符串


129

我认为这是不可能的,但我想我要是有办法的话。我的想法是,我有一个用于Web资源文件夹路径的变量:

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

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

我得到这个结果:

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

但是,我希望将这些字符串合并为一个字符串,如下所示:

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

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

Answers:


225

使用变量插值

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

完整代码:

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

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

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

感谢你的回答!太棒了。现在,我可以确保即使上下文路径发生更改,也不会发生重构的噩梦。
juminoz'4

谢谢,我只是遇到了同样的问题,而在文档中却没有提到。
大卫

谢谢@Paulpro!我在VS Web编译器插件方面遇到了问题,它在更改我的背景图片网址,而且我不太确定如何进行串联:)
hatsrumandcode 2015年

6
只是为可能会使用此答案但正在尝试使用它的人们提供的注释,例如,将数字变量与诸如px或的字符串组合%:您可以通过在字符串~前面加上波浪号来取消对字符串的引用,例如:width: ~"@{w}px";
AsGoodAsItGets


12

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

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

然后您可以使用:

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

要么

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

你好,欢迎光临!为什么您认为接受的答案不再有效?过时了吗?有没有技术上的进步?这是不对的?为什么你的更好?
STT LCU 2013年

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);

1
从技术上讲并不能回答问题,但仍然是一个有用的技巧。
trysis

7

不知道您使用的是less.js还是lessphp(例如WordPress的WP-Less插件中的),但是使用lessphp可以使用以下方法“取消引用”字符串~http : //leafo.net/lessphp/docs/#string_unquoting


1
这也适用于常规LESS。我不知道在撰写此答案时是否在2012年。
trysis

-7

使用Drupal7。我使用了普通的加号,并且可以正常工作:

@images_path+'bg.png'

5
除非他愿意学习Drupal只是为了让concat字符串在LESS / CSS中使用,否则我认为您的建议毫无价值。没有冒犯,我只是说。
ozanmuyes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.