好吧,我正在为此失去理智。我确实在 SO 和 google 上阅读过它,我什至有预加载器集(在 SO 上找到),但我发现的插件/代码都没有帮助我。
我想要做的是:等到所有图像都预加载,然后才执行所有其他 javascript 代码。就我而言,它可以(但不是必须)有“正在加载...”消息。
事实是我在身体背景中有一个相当大的图像和另外两个更大的图像,所以我想预加载它们,这样它们就会立即显示出来,并且不会有那种丑陋的“加载”图像效果。
这是我现在正在使用的,但它并不好:
$(document).ready(function()
{
preloadImages();
...some other code...
function preloadImages(){
imagePreloader([
'images/1.png',
'images/2.jpg',
'images/3.png',
]);
}
function imagePreloader(arrayOfImages) {
$(arrayOfImages).each(function(){
(new Image()).src = this;
});
}
}
我不知道,也许我应该在 .ready() 之外的某个地方调用这个预加载器?或类似的东西,请帮助...
顺便说一句,是的,我也读过这篇文章,我不知道为什么,但是 .ready() 对我来说工作得更快:(
编辑:
好的,所以最后我得到了这个东西。我的问题?我将等待的 div 设置错了。这是我现在的代码:我有加载 div,它显示在所有内容之上,然后当所有图像加载时(使用 $(window).load(function(){...});按照我的建议,隐藏该 div。
<div id="loading">
<div id="waiting">
<img class="loadingGif" src="images/loading.gif">
</div>
</div>
#loading
{
background-size: 100%;
background-color:#000;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
z-index:999;
}
#waiting
{
margin-left: auto;
margin-right: auto;
position:absolute;
top: 39%;
left: 27.81%;
width: 45%;
height: 150px;
background-color: #FFF;
border: 12px solid #FF771C;
text-align: center;
}
我的 jQuery 代码是这样的:
$(window).load(function()
{
$('#loading').addClass('hidden');
...
}