这是我在这里的第一个问题,请见谅,如果有什么不妥之处 :) 我想在网页加载之前预加载3张图片,以便它们同时出现。目前这些图片是一个接一个地加载,看起来有点断断续续。其中一张图片在CSS中定义,另外两张图片是简单的“img”元素。我尝试创建JavaScript图像对象 - 图像仍然缓慢加载,尝试在"display:none;"div中预加载它们 - 仍然缓慢。我应该怎么办?
谢谢。
这是我在这里的第一个问题,请见谅,如果有什么不妥之处 :) 我想在网页加载之前预加载3张图片,以便它们同时出现。目前这些图片是一个接一个地加载,看起来有点断断续续。其中一张图片在CSS中定义,另外两张图片是简单的“img”元素。我尝试创建JavaScript图像对象 - 图像仍然缓慢加载,尝试在"display:none;"div中预加载它们 - 仍然缓慢。我应该怎么办?
谢谢。
<!-- jQuery is required -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<!-- the images -->
<div class="showmetoo" style="background: url(jimhance-vader_inset.jpg)">
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></div>
<img class="showall" src="octopus3.jpg" alt="a picture"><br/>
<img class="showall" src="moorea.jpg" alt="a picture"><br/>
<!-- hidden by default -->
<style>
img.showall { visibility: hidden }
div.showmetoo { visibility: hidden }
</style>
<!-- the script -->
<script type="text/javascript">
var remaining = $('.showall').length;
function showthem(){
remaining--;
if(!remaining){
$('.showall').css('visibility', 'visible');
$('.showmetoo').css('visibility', 'visible');
}
}
// bind the callback to the load event of the pictures.
$('.showall').bind('load',showthem);
// force the pictures to show (just in case)
setTimeout(showthem, 1000); //just in case load event fires before callback is set.
</script>
最简单的解决方案可能是在加载所有三个图像之前,为它们显示一个加载gif,然后用实际图像替换gif。
4500 X 6000
,大小约为~300kB
。因此,我使用图像编辑工具调整了大小,并将其缩小至400 X 600
,大小约为~50kB
。现在图片加载速度很快,并且在加载时不会显示空白空间。