Подтвердить что ты не робот

Как я могу ссылаться на ресурс изображения из CSS в grails?

Я хочу ссылаться на изображение в моей основной таблице стилей для приложения Grails, и я не могу заставить его работать. Мое изображение живет в стандартном месте моего приложения Grails...

project\web-app\images\outbound-blue.png

В моей таблице стилей я хочу использовать его в качестве фонового изображения для класса...

.messageimg {
    height:17px;
    width:16px;
    background-image:url(images/outbound-blue.png);
    background-repeat:no-repeat;
}

По какой-то причине это не работает. Моя таблица стилей находится в обычном месте, т.е.

project\web-app\css\main.css

Я получаю отсутствующий маркер изображения при загрузке страницы в браузере. Я проверил, что у меня нет опечаток в именах и т.д. Я также пытался возиться с виртуальным путем в URL-адресе, но я не могу понять, что мне нужно сделать, чтобы сделать эту работу в Grails.

Я не хочу использовать GSP и вставлять тег IMG в свой код, потому что я хочу управлять изображением через стили.

Итак, что я делаю неправильно?

4b9b3361

Ответ 1

Попробуйте добавить "../" в начале URI. Например:

../images/outbound-blue.png

"../" в начале URI сообщает браузеру перейти на один уровень в родительский каталог, а затем заглянуть в каталог images. В настоящее время он настроен на поиск подкаталога под названием images в каталоге, содержащем таблицы стилей.

Ответ 2

Более портативный способ указать расположение изображений - использовать функцию resource():

.messageimg {
    height:17px;
    width:16px;
    background-image:url('${resource(dir: "images", file: "outbound-blue.png")}');
    background-repeat:no-repeat;
}

Ответ 3

Помните, хотя. Использование $resource{... не работает в указанном файле .css. Вам нужно добавить элемент style.

Ответ 4

Обычно вы ссылаетесь на ресурс в таблице стилей как на относительный URL-адрес. URL вашего изображения должен быть относительно местоположения файла CSS. Поэтому ../images/outbound-blue.png из /appName/css/main.css будет ссылаться на /appName/images/outbound-blue.png

Если у вас все еще есть проблемы, вы можете отладить это с помощью инструмента, такого как firebug, для проверки страницы и проверки каждого шага в вашем стиле.
Убедитесь, что:

  • Элемент, который, по вашему мнению, оформлен, - это стиль стилей.
  • Образ, на который вы ссылаетесь, можно получить как вручную, так и через firebug.
  • Загружаемый файл css не кэшируется и фактически обновляется браузером.

Ответ 5

Таким образом, проблема заключалась в том, что браузер просматривал

http://localhost:8080/<app-name>/assets/images/<background-image-name>

который кажется правильным, но если вы просматриваете другие изображения на странице, они визуализируются с пути

http://localhost:8080/<app-name>/assets/background-image-name 

Итак, просто исключив изображения в ваше имя пути, вы должны исправить эту проблему. Тем не менее, это всего лишь работа, вокруг которой я уверен, будет лучше объяснение и решение. Приветствия.