我正在寻找一个快速和简单的方法,预加载图像与JavaScript。如果这很重要,我将使用jQuery。
我在这里看到了这个(http://nettuts.com...):)
function complexLoad(config, fileNames) {
for (var x = 0; x < fileNames.length; x++) {
$("<img>").attr({
id: fileNames[x],
src: config.imgDir + fileNames[x] + config.imgFormat,
title: "The " + fileNames[x] + " nebula"
}).appendTo("#" + config.imgContainer).css({ display: "none" });
}
};
但是,对于我想要的东西来说,这看起来有点夸张!
我知道有jQuery插件在那里做这个,但他们似乎都有点大(大小);我只需要一个快速,简单和短的方式预加载图像!
你可以在HTML中加载图片,使用CSS display:none;规则,然后显示他们当你想用js或jquery
不使用js或jquery函数预加载只是一个css规则Vs多行js被执行
例如:Html
<img src="someimg.png" class="hide" alt=""/>
Css:
.hide{
display:none;
}
jQuery:
//if want to show img
$('.hide').show();
//if want to hide
$('.hide').hide();
通过jquery/javascript预加载图像是不好的,因为图像需要几毫秒的时间来加载页面+你有几毫秒的时间来解析和执行脚本,特别是如果它们是大图像,所以隐藏在hml中对性能也更好,因为图像是真正的预加载而不可见,直到你显示出来!
你可以在HTML中加载图片,使用CSS display:none;规则,然后显示他们当你想用js或jquery
不使用js或jquery函数预加载只是一个css规则Vs多行js被执行
例如:Html
<img src="someimg.png" class="hide" alt=""/>
Css:
.hide{
display:none;
}
jQuery:
//if want to show img
$('.hide').show();
//if want to hide
$('.hide').hide();
通过jquery/javascript预加载图像是不好的,因为图像需要几毫秒的时间来加载页面+你有几毫秒的时间来解析和执行脚本,特别是如果它们是大图像,所以隐藏在hml中对性能也更好,因为图像是真正的预加载而不可见,直到你显示出来!
$.fn.preload = function (callback) {
var length = this.length;
var iterator = 0;
return this.each(function () {
var self = this;
var tmp = new Image();
if (callback) tmp.onload = function () {
callback.call(self, 100 * ++iterator / length, iterator === length);
};
tmp.src = this.src;
});
};
用法很简单:
$('img').preload(function(perc, done) {
console.log(this, perc, done);
});
http://jsfiddle.net/yckart/ACbTK/