Это старый вопрос о том, как предварительно загружать фоновые изображения css, но с небольшим поворотом: фоновые изображения устанавливаются через jQuery, поскольку они из Vimeo. Каждое фоновое изображение представляет собой видеоизображение из vimeo, поэтому я устанавливаю фон, используя URL миниатюры vimeo при загрузке сайта. Можно ли как-то предварительно загрузить эти изображения? У меня есть оверлей, который я хочу исчезнуть при загрузке контента, но, несмотря на мои усилия, фоновые изображения все еще заметно загружаются, когда оверлей исчезает!
Вот некоторый (не очень красноречивый) код, который я пробовал:
var count = $('.video_stub').length;
$('.video_stub').each(function(index) {
var bgUrl = $(this).data('thumb');
$('<img/>')[0].src = bgUrl;
if(index == (count - 1)) {
$('.video_stub').each(function(i) {
var bgUrl = $(this).data('thumb');
// Set the video thumb's background using the vimeo thumb image
$(this).css('background-image', 'url(' + bgUrl + ')');
if(index == (count - 1)) {
$('#temp_overlay').fadeOut('slow');
}
});
}
});
Есть идеи? Большое спасибо заранее.
ИЗМЕНИТЬ:
Я пробовал этот код, но безуспешно. Мне интересно, это проблема масштаба? Возможно, я не могу получить доступ к переменной index из обратного вызова загрузки:
// Set video thumb click handler
var count = $('.video_stub').length;
// Set video thumb click handler
// Iterate through each video stub
$('.video_stub').each(function(index) {
var bgUrl = $(this).data('thumb');
$('<img/>').attr('src', bgUrl).load(function() {
$('.video_stub:eq(' + index + ')').css('background-image', 'url(' + bgUrl + ')');
});
if(index == (count - 1)) {
$('#temp_overlay').fadeOut('slow');
}
});
Я старался:
$('<img/>').attr('src', bgUrl).load(function() {
$(this).css('background-image', 'url(' + bgUrl + ')');
});
но безрезультатно.