如何预加载 css 背景图像是一个古老的问题,但有点扭曲:背景图像是通过 jQuery 设置的,因为它们来自 Vimeo。每个背景图像都是来自 vimeo 的视频图像,因此我在网站加载时使用 vimeo 缩略图 url 设置背景。我可以以某种方式预加载这些图像吗?我有一个覆盖层,我想在加载内容时消失,但尽管我努力,当覆盖层消失时背景图像仍然可见加载!
这是我尝试过的一些(不是那么雄辩的)代码:
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');
}
});
}
});
有任何想法吗?提前非常感谢。
编辑:
我尝试了这段代码,但没有成功。我想知道这是不是范围问题?也许我无法从加载回调中访问索引变量:
// 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 + ')');
});
无济于事。