jQuery实现动态加载大尺寸图片
如果页面中的图片下载尺寸太大,而且不需要把所有图片显示在页面中,可以使用js来动态加载图片,即友好又加快了整个页面的加载速度。不多说了,直接看下面代码,这里是使用了jQuery库实现,使用的版本为1.4.2的。
DOM结构:
<div id="slider">
<div class="nav">
<ul>
<li>
<a href="http://www.wallcoo.com/paint/Robert_Finale_art_paintings/
wallpapers/1280x800/Robert_Finale_art_paintings_PortofinoDawn.jpg">Image 1</a>
</li>
<li>
<a href="http://www.wallcoo.com/paint/Robert_Finale_art_paintings/
wallpapers/1280x800/Robert_Finale_art_paintings_ReflectionOfBelgium.jpg">Image 2</a>
</li>
<li>
<a href="http://www.wallcoo.com/paint/Robert_Finale_art_paintings/
wallpapers/1280x800/Robert_Finale_art_paintings_SummerBreeze.jpg">Image 3</a>
</li>
<li>
<a href="http://www.wallcoo.com/paint/Robert_Finale_art_paintings/
wallpapers/1280x800/Robert_Finale_art_paintings_NewBeginnings.jpg">Image 4</a>
</li>
</ul>
</div>
<div class="photos">
<ul>
<li>
<a href=""><strong>第 1 张图片</strong></a>
</li>
<li>
<a href=""><strong>第 2 张图片</strong></a>
</li>
<li>
<a href=""><strong>第 3 张图片</strong></a>
</li>
<li>
<a href=""><strong>第 4 张图片</strong></a>
</li>
</ul>
</div>
</div>
用简单的CSS代码调整下结构:
*{margin:0;padding:0}
body{font-family:Verdana;font-size:12px}
ul{list-style:none}
img{border:0;vertical-align:bottom}
#slider{width:600px;margin:0 auto}
#slider .nav{width:100px;float:left}
#slider .nav li{height:30px;line-height:30px}
#slider .nav li a{display:block;height:30px;font-weight:700;color:#333}
#slider .nav li a:hover{color:red}
#slider .photos{border:solid 1px #ccc;overflow:hidden;float:left;padding:10px}
#slider .photos,#slider .photos li,#slider .photos img{width:400px;height:300px}
#slider .photos li{display:none;position:relative}
#slider .photos li a{
text-decoration:none;
color:#999;
}
#slider .photos li .loading{position:absolute;z-index:9;
font-size:18px;font-weight:700;color:#fc0}
javascript实现动态加载图片:
$(function(){
//获取所需元素集合,缓存到jquery对象
var div = $("#slider"), li = $("div.photos li", div);
//默认显示第一张图片的容器
li.eq(0).show();
//声明setInterval变量,用来显示图片下载进度
var process;
$("div.nav li", div).each(function(i){
$(this).bind("mouseover", {
index: i
}, function(e){
var i = e.data.index, curr = li.eq(i), a = $("a", curr);
//显示当前导航对应的图片的容器
li.hide().eq(i).show();
//立即清除所有图片下载显示进度
clearInterval(process);
a.empty();
//append一个进度提示到当前图片容器
$('<span></span>', {
text: "loading",
"class": "loading",
css: {
top: parseInt((li.height() - $(this).height()) / 2) + "px",
left: parseInt((li.width() - $(this).width()) / 2) + "px"
}
}).appendTo(a);
//append一个img元素到当前图片容器
$('<img />').appendTo(a);
var img = $("img", curr);
//动态显示下载进度
process = setInterval(function(){
loading($(".loading", curr), 10, "loading");
}, 200);
img.load(function(){
//图片加载后隐藏图片下载进度显示
$(".loading", curr).fadeOut();
clearInterval(process);
});
img.attr("src", $("a", this).attr("href"));
});
});
});
function loading(element, maxlength, loadingText){
$(element).text(function(i, text){
return (text.length < maxlength) ? text + "." : loadingText;
});
}
浙公网安备 33010602011771号