Ответ 1
Попробуйте использовать интерполяцию строк для таких вещей. Найдите "переменную интерполяцию" в docs.
@base-url: "http://assets.fnord.com";
background-image: url("@{base-url}/images/bg.png");
Я использую LESS стиль.
Рассмотрим следующий CSS:
.side-bg
{
background:url(../img/layout/side-bg.jpg) top no-repeat;
}
Сейчас все мои изображения находятся в папке ../img/
Я хотел бы установить переменную как путь к изображению и использовать ее так:
@image-path: ../img;
.side-bg
{
background:url(@image-path/layout/side-bg.jpg) top no-repeat;
}
Однако это не работает. Это не огромная сделка, я всегда мог использовать поиск и замену, если папка с картинками когда-либо менялась. Я только начинаю учиться МЕНЬШЕ, и мне интересно, возможно ли что-то подобное.
Попробуйте использовать интерполяцию строк для таких вещей. Найдите "переменную интерполяцию" в docs.
@base-url: "http://assets.fnord.com";
background-image: url("@{base-url}/images/bg.png");
Решение:
.side-bg
{
background : ~"url( '@{image-path}/layout/side-bg.jpg' )" top no-repeat;
}
Я искал тот же вопрос и нашел эту страницу. Думал, что я опубликую свое решение, поскольку кто-то может найти его полезным...
@iconpath: '/myicons/';
.icon (@icon) {
background: no-repeat url('@{iconpath}@{icon}');
}
.icon-foo { .icon('foo.png'); }
.icon-bar { .icon('bar.png'); }
.icon-spuds { .icon('spuds.png'); }
который компилируется (используется http://winless.org/online-less-compiler)
.icon-foo {
background: no-repeat url('/myicons/foo.png');
}
.icon-bar {
background: no-repeat url('/myicons/bar.png');
}
.icon-spuds {
background: no-repeat url('/myicons/spuds.png');
}
Антон Строгонов ответ хорош, но знайте Issue @294
Используя вышеизложенное, которое приходит прямо из документов, я получаю url://pathtolessfile/variable
, который я установил. Даже если я пытаюсь установить абсолютный URL вместо относительного. Например, это работает
@base-url: "../../images/";
@background-image : url ("@{base-url}/bg.png");
Но это не работает
$base-url: "http://localhost/ns/assets/images/";
@background-image : url ("@{base-url}/bg.png";
В последнем примере мой конечный путь к исходному файлу становится
http://localhost/ns/assets/css/libs/http://localhost/ns/assets/images/bg.png
Ниже приведен обновленный и чистый способ обработки путей изображений с помощью LESS:
Начните с переменной:
@imagePath: ~"../images/bg/";
Затем используйте его следующим образом:
.main-bg {
background: url('@{imagePath}my-background-image.png') repeat scroll left top;
}
Убедитесь, что переменная @imagePath
указывает на папку с изображениями, где бы вы не скомпилировали CSS, а не там, где у вас есть файлы LESS. Кроме того, вам нужно избежать адреса в переменной, как в приведенном выше примере, чтобы гарантировать, что он не будет перезаписан less.js.
Относительные URL-адреса могут обрабатываться компилятором командной строки, предположительно. Вероятно, есть такой же вариант, который вы можете установить в наблюдателе файлов.
https://github.com/cloudhead/less.js/wiki/Command-Line-Usage
РЕДАКТИРОВАТЬ: Там полно. Просто посмотрите: http://lesscss.org/usage/#command-line-usage-options
relativeUrls: true