62,074
社区成员
发帖
与我相关
我的任务
分享
$(document).ready(function(e) {
//图片延迟加载
var change=function(){
var top = $(document).scrollTop()+(document.all ? document.getElementsByTagName("html")[0].offsetHeight : window.innerHeight);
var objs=$("img[delay-img]");
var length=objs.length;
if(length<1){
$(window).unbind("scroll",c_change).unbind("resize",c_change);
}
for(var i=length-1;i>-1;i--){
var obj=objs[i];
if(top>$(obj).offset().top + 10){
var src=$(obj).attr("delay-img");
$(obj).removeAttr("delay-img").attr("src",src);
}
}
}
var timer=null;
var c_change=function(e) {
window.clearTimeout(timer);
timer=window.setTimeout(change,100);
}
$(window).scroll(c_change).resize(c_change);
change()
});
调用
<img delay-img="cache/236x348-2.jpg" width="236" height="348" alt="" />
当然如果你经常动态添加图片,就自己优化下吧http://www.i-ssy.com/drag-word.html
原生js写的,其实延迟很简单,就是检测右边滚动条的位置,结合 window.onscroll函数和 window.onresize
1开始就定义img的高度是有好处的,如果 没有 height=xxx 则浏览器默认图片的高度是很小的,像淘宝的展示, 滚动条一拉 就是一大把,设定了高度后能减少这种情况的发生