Меньше фонового изображения css не найдено, когда статические файлы подаются с подчиненного URI - PullRequest
1 голос
/ 19 января 2012

Для тех, кто интересуется, я запускаю установку Django 1.3, используя прекрасную интеграцию статических файлов и less.js.

Проблема, с которой я сталкиваюсь, такова:

В моем HTML у меня есть:

<link rel="stylesheet/less" type="text/css" href="{{ STATIC_URL }}less/style.less">
<script src="{{ STATIC_URL }}js/less.js" type="text/javascript"></script>

В этом случае STATIC_URL равен / static /, поэтому при обработке HTML ссылки становятся /static/less/style.less и /static/js/less.js соответственно.

Теперь в моем файле LESS у меня есть следующий (упрощенный) код:

body {
    background: url('../img/bkgnd.png');
}

Проблема в том, что мне кажется, что LESS имеет дело с этим глупо, если я не глупс такой же вероятностью: -)

Меньший JS-файл захватывается как http://localhost:8000/static/js/less.js, а затем захватывает файл css по адресу http://localhost:8000/static/less/style.less

Теперь я ожидаю, что меньшее должно знатьместоположение style.less и, следовательно, при компиляции в CSS будет искать фоновое изображение в http://localhost:8000/static/less/../img/bkgnd.png, которое, очевидно, просто http://localhost:8000/static/img/backgnd.png

Вместо этого, однако, кажется, что игнорирует местоположение и просто ищетфоновое изображение на http://localhost:8000/img/backgnd.png.

Кто-нибудьесть объяснение, почему это происходит?

Я добавил временное исправление, установив переменную javascript, содержащую статический URL-адрес, и добавив ее к URL-адресу изображения в файле CSS.Это хорошо для разработки, но я хочу скомпилировать код, используя lessc в производственной среде, и less не позволяет мне передавать переменные javascript, насколько я могу видеть (что было бы неплохо).

Любая помощьбыл бы очень признателен, это сводит меня с ума: -)

1 Ответ

2 голосов
/ 19 января 2012

Он ищет файл img в отношении документа, который вы просматриваете, а не в отношении файла css.

Так что измените свой CSS на этот:

...