Загружается ли фоновое изображение у скрытого блока?
Есть блок .screen со свойством display: none. У псевдоэлемента этого блока задано фоновое изображение.
.screen { display: none; } .screen::before { background: url("../img/bg-desktop.jpg") center top no-repeat; } |
.screen { display: none; } .screen::before { background: url("../img/bg-desktop.jpg") center top no-repeat; }
Загружается ли это фоновое изображение у псевдоэлемента скрытого блока?
Дополнительно:
Нет, не загрузится. Это буквально 20 секунд, чтобы посмотреть в профайлере :)
- Я посмотрел во вкладке sources, но не был уверен)
- ymfront, смотри во вкладке "Network" куда уходят запросы. Можно выбрать фильтр по "Media". К слову, если я не путаю, картинка не загрузится даже если задан display, но не задан content в псевдоэлементе
- По-моему все равно загрузится но отображаться не будет, поэтому в плагинах на ленивую загрузку URL указывается другим параметром что то из серии data-url="" и его потом подставляют и наче какой в этом смысл.... Но вообще я бы перепроверил с помощью огромной картинки...
- Уставшая Вишенка, 1. data-url используют для тегов img, потому что они таки загружаются даже скрытые.
2. Зачем проверять огромной картинкой? Запрос вы увидите в любом случае.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Да, фоновое изображение может загружаться даже для скрытого блока, но есть некоторые нюансы, на которые стоит обратить внимание.
При использовании CSS свойства background-image для задания фонового изображения элемента, это изображение будет загружено в любом случае, даже если элемент скрыт с помощью display: none; или visibility: hidden;. Однако, есть важный момент - браузер может оптимизировать загрузку фоновых изображений для скрытых элементов, чтобы повысить производительность страницы.
Если вы хотите избежать загрузки фонового изображения для скрытого блока и уменьшить нагрузку на страницу, можно использовать следующие подходы:
1. Использование lazy loading: можно отложить загрузку фонового изображения до момента, когда элемент станет видимым для пользователя. Это можно сделать с помощью JavaScript библиотек, таких как LazyLoad или Intersection Observer API.
2. Загрузка фонового изображения динамически: вместо простого присваивания background-image через CSS, можно добавить это свойство к элементу динамически только в момент, когда он становится видимым.
Пример использования lazy loading с помощью JavaScript:
const lazyImages = document.querySelectorAll('.lazy-image'); const lazyLoad = target => { const io = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { const img = entry.target; const src = img.getAttribute('data-src'); img.setAttribute('src', src); observer.disconnect(); } }); }); io.observe(target); }; lazyImages.forEach(lazyLoad);
Таким образом, можно эффективно управлять загрузкой фоновых изображений для скрытых блоков на странице и повысить производительность.