Менее CSS переменная URL всегда показывает базовый URL сервера перед выводом переменной - PullRequest
3 голосов
/ 11 августа 2011

Рассмотрим этот МЕНЬШИЙ код:

#login-form-submit {
    @base-url: "/webshop/rsc/img";
    background-image: url("@{base-url}/icons/login.png");
}

Выходной код CSS:

#login-form-submit {
    background-image: url("http://localhost:8080/webshop/rsc/css/specific//webshop/rsc/img/icons/login.png"); 
}

Кто-нибудь знает, почему это может происходить?Если я откажусь от переменной и напрямую использую строку, CSS выдаст ожидаемый результат.(Без полного URL-адреса.)

Сервер, на котором он работает - это JBoss EAP 5.

Ответы [ 4 ]

11 голосов
/ 10 ноября 2011

К сожалению, существует проблема, когда LESS применяет относительный URL к началу, если строка начинается с интерполированной переменной. Вы могли бы что-то вроде:

#login-form-submit {
  @url: "webshop/rsc/img";
  background-image: url("/@{url}/webshop/rsc/img");
}

Для получения дополнительной информации, см. Эту проблему .

1 голос
/ 24 января 2013

Похоже, что это исправлено с LESS 1.3.3.

0 голосов
/ 15 мая 2012

Стоит отметить, что вы можете обойти эту проблему, скомпилировав less (в JavaScript), а не полагаясь на синтаксический анализ браузера "stylesheet / less". Вызов парсера через JavaScript, кажется, каким-то образом полностью устраняет проблему.

0 голосов
/ 11 мая 2012

Пока эта ошибка в LESS не исправлена ​​(как упоминает @rcl), обходной путь должен всегда предполагать абсолютный путь для носителей, которые могут быть предоставлены из другого места (скажем, локальный сервер в dev, CDN в производстве).

background-image: url("http://@{base-url}/icons/login.png");

, где

@base-url: "localhost/static";  /* in dev */
@base-url: "sample.cdn.com";  /* in production */
...