juminoz
juminoz

Reputation: 3208

Concatenate strings in Less

I think this is not possible, but I thought I ask in case there is a way. The idea is that I have a variable for path to web resource folder:

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

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

I get this as a result:

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

But, I want the strings to combine into one string like this:

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

Is it possible to concatenate strings together in Less?

Upvotes: 133

Views: 80596

Answers (6)

jordanb
jordanb

Reputation: 2045

For those string-like unit values like 45deg in transform: rotate(45deg) use the unit(value, suffix) function. Example:

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

Upvotes: 9

Paul
Paul

Reputation: 141829

Use Variable Interpolation:

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

Full code:

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

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

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

Upvotes: 237

Stephan Hoyer
Stephan Hoyer

Reputation: 4928

As you can see in the documentation, you can use string interpolation also with variable and plain strings together:

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

Upvotes: 33

user2725509
user2725509

Reputation: 121

I was looking for the same trick for handling images. I used a mixin to answer this:

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

Then you can use :

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

or

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

Upvotes: 12

Gaba
Gaba

Reputation: 7

Using Drupal 7. I've used an ordinary plus mark and it's working:

@images_path+'bg.png'

Upvotes: -7

FelipeAls
FelipeAls

Reputation: 22161

Don't know if you're using less.js or lessphp (like in WP-Less plugin for WordPress) but with lessphp you can "unquote" strings with ~ : http://leafo.net/lessphp/docs/#string_unquoting

Upvotes: 7

Related Questions