#css #preload
#css #предварительная загрузка
Вопрос:
Является ли это приемлемым способом предварительной загрузки изображений по сравнению с некоторым js-кодом внутри html / head
body:after{
display:none;
content:
url(img1.jpg)
url(img2.jpg)
...
}
способ js
$.preload = function() {
for (var i = 0; i < arguments.length; i ) {
$("<img />").attr("src", arguments[i]);
}
}
$.preload("img1.jpg","img2.jpg");
Комментарии:
1. Приятно, что в вашем вопросе вы сравнили методы предварительной загрузки CSS и JS. Я использую некоторые изображения в динамически генерируемом фрагменте HTML и только что обнаружил, что для меня предварительный загрузчик CSS был правильным способом получения кэшированных изображений.
2. Ваш метод CSS работает для меня, спасибо.
Ответ №1:
Концепция заключается в размещении фоновых изображений на псевдоэлементе, который загружается при загрузке страницы, но не отображается. Это приводит к тому, что браузер загружает изображения, чтобы, когда они будут вызваны позже другим элементом, они были готовы к работе.
Это можно использовать для предварительной загрузки изображений и замены их при наведении курсора мыши. У «предварительной загрузки» div нет высоты / ширины, поскольку для изображений задан фоновый режим, поэтому он не отображается на странице, и изображения готовы, когда вы хотите поменять их местами при наведении курсора мыши. (очевидно, вам придется установить высоту / ширину для привязок. Я просто показываю минимальный CSS здесь, чтобы донести суть)
HTML:
<div id="preload"></div>
<div id="icons">
<a href="http://..." class="button-1"></a>
<a href="http://..." class="button-2"></a>
<a href="http://..." class="button-3"></a>
</div>
CSS:
#preload {background: url('pic1b.png'), url('pic2b.png'), url('pic3b.png');}
.button-1 {background: url('pic1a.png');}
.button-2 {background: url('pic2a.png');}
.button-3 {background: url('pic3a.png');}
.button-1:hover {background: url('pic1b.png');}
.button-2:hover {background: url('pic2b.png');}
.button-3:hover {background: url('pic3b.png');}
Очевидно, что есть много других способов, и в сообщении выше приведена ссылка, которая включает в себя многие другие.
http://perishablepress.com/3-ways-preload-images-css-javascript-ajax/
Комментарии:
1. почему
display inline
? Это по умолчанию, не так ли? А почемуwidth:0
иheight:0?
не было бы лучшеdisplay:none
?2. У «предварительной загрузки» div нет высоты / ширины, поскольку для изображений задан фоновый режим, поэтому он не отображается на странице, и изображения готовы, когда вы хотите поменять их местами при наведении курсора мыши.
3. Я опубликовал отличный пример, пожалуйста, дайте мне знать, если это было полезно
4. Да, ваши усилия действительно полезны для меня, и я поддержал это, большое спасибо, но я уже принял ответ ndm13.
Ответ №2:
Я полагаю, что этот метод будет работать, если изображение не генерируется динамически. Единственная проблема с предварительной загрузкой с использованием только CSS, по-видимому, заключается в том, что изображения загружаются ВМЕСТЕ СО страницей, а не после нее. Вы можете запустить событие JavaScript после завершения загрузки страницы.
Дальнейшее чтение: http://perishablepress.com/3-ways-preload-images-css-javascript-ajax /
Комментарии:
1. Спасибо, ваша ссылка очень полезна для меня.
Ответ №3:
По крайней мере, в Firefox изображения не кэшируются display: none
. Вместо этого вы можете установить:
body:after {
width: 0; height: 0; overflow: hidden; display: block;
content: url('img1')
url('img2')
...;
}