132 votes

Concaténation de chaînes de caractères dans LESS

Je pense que ce n'est pas possible, mais j'ai pensé demander au cas où il y aurait un moyen. L'idée est que j'ai une variable pour le chemin vers le dossier des ressources web :

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

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

J'obtiens ceci en conséquence :

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

Mais, je veux que les chaînes se combinent en une seule chaîne comme ceci :

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

Est-il possible de concaténer des chaînes de caractères dans LESS ?

236voto

Paulpro Points 54844

Utilice Interpolation variable :

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

Code complet :

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

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

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

0 votes

Merci pour la réponse ! C'est parfait. Maintenant, je peux m'assurer que même si le chemin du contexte change, il n'y aura pas de cauchemar de refonte.

0 votes

Merci, je viens de rencontrer le même problème et je ne l'avais pas vu dans la documentation.

0 votes

Merci @Paulpro ! J'avais un problème avec l'add-on VS Web Compiler, qui modifiait l'url de mon image de fond, et je ne savais pas trop comment faire la concaténation :)

30voto

Stephan Hoyer Points 861

Comme vous pouvez le voir dans le documentation Vous pouvez également utiliser l'interpolation de chaînes de caractères avec des chaînes de caractères variables et simples :

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

12voto

user2725509 Points 51

Je cherchais la même astuce pour la manipulation des images. J'ai utilisé un mixin pour répondre à cette question :

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

Vous pouvez alors utiliser :

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

o

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

0 votes

Bonjour et bienvenue ! Pourquoi pensez-vous que la réponse acceptée n'est plus valable ? Est-elle dépassée ? Y a-t-il eu une amélioration technologique ? Elle est erronée ? Pourquoi la vôtre est-elle meilleure ?

7voto

FelipeAls Points 10010

Je ne sais pas si vous utilisez less.js ou lessphp (comme dans Sans WP pour WordPress) mais avec lessphp, vous pouvez "décoter" les chaînes de caractères avec ~ : http://leafo.net/lessphp/docs/#string_unquoting

1 votes

Cela fonctionne également avec LESS normal. Je ne sais pas si c'était le cas en 2012 lorsque cette réponse a été écrite.

-7voto

Gaba Points 1

Utilisation de Drupal 7. J'ai utilisé un signe plus ordinaire et cela fonctionne :

@images_path+'bg.png'

6 votes

A moins qu'il ne veuille apprendre Drupal juste pour concat les chaînes de caractères pour les utiliser dans LESS/CSS, je pense que votre suggestion ne vaut rien. Sans vouloir vous vexer, je dis ça comme ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X