Nik*_*ola 9 jquery image-preloader preload
好吧,我对此失去了理智.我确实在这里阅读了SO和谷歌,我甚至有预装置设置(在这里找到了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;
});
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道,也许我应该在.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;
}
Run Code Online (Sandbox Code Playgroud)
我的jQuery代码是这样的:
$(window).load(function()
{
$('#loading').addClass('hidden');
...
}
Run Code Online (Sandbox Code Playgroud)
您可以在...上执行脚本,而不是尝试预加载.
window.onload = function(){..}
Run Code Online (Sandbox Code Playgroud)
在加载所有图像之前,这不会触发.
我有一个名为waitForImages的插件,可以在加载后代图像时附加回调.
在您的情况下,如果您想等待所有资产下载,$(window).load()可能没问题.但你可以用我的插件做得更酷:)
var loading = $('#loading');
$('body').waitForImages(function()
{
loading.addClass('hidden');
}, function(loaded, total)
{
loading.html(loaded + ' of ' + total);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14204 次 |
| 最近记录: |