//scrollLoadImg.js
/* * obj:要加载图片的容器(默认document) * scrollObj:要滚动的容器(默认window) * src:预加载的路径(默认'data-img') * time:延迟加载图片(默认1秒)*/ var t; var scrollLoadImg = function(par){ if(arguments.length==0){ par = { obj:document, scrollObj:window, src:"data-img", time:1000 }; }else{ par = { obj:par.obj?par.obj:document, scrollObj:par.scrollObj?par.scrollObj:window, src:par.src?par.src:"data-img", time:par.time?par.time:1000 }; } this.init = function(){ var isWindow = par.scrollObj.constructor.name==="Window"; var isDocument = par.scrollObj.constructor.name==="HTMLDocument"; var imageObjArr =isWindow?document.images : par.obj.getElementsByTagName("img"); //获取页面所有img标签 var scrollTop = isWindow?document.documentElement.scrollTop || document.body.scrollTop:par.scrollObj.scrollTop; //获取页面滚动位置 var clientHeight = isWindow?window.innerHeight:isDocument?document.documentElement.clientHeight || document.body.clientHeight:par.scrollObj.clientHeight; //根据传入的对象获取对象可视高度(默认是window) for(var i = 0;i<imageObjArr.length;i++){ var currentImg = imageObjArr[i]; var imgTop = currentImg.offsetTop; //获取图片距离顶部位置 if(currentImg.getAttribute("src")!==currentImg.getAttribute(par.src) && currentImg.getAttribute(par.src)!==null){ if(imgTop>=scrollTop-clientHeight/2 && imgTop<scrollTop+clientHeight+clientHeight/2){ imageObjArr[i].setAttribute("src",currentImg.getAttribute(par.src)); } } } } this.yc = function(){ clearTimeout(t); t = setTimeout(function(){ return this.init(); },par.time); } this.yc(); var _this = this; par.scrollObj.onscroll = function(){ _this.yc(); } }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="scrollLoadImg.js"></script> <script> window.onload = function() { var content = document.getElementById("content"); var scrollInfo = document.getElementById("scrollInfo"); scrollLoadImg({ obj: content, //要加载图片的区域 scrollObj:scrollInfo, //滚动区域,不设置的话默认是window time: 1000 //延迟多少毫秒加载图片(1000毫秒等于1秒) }) } </script> <style type="text/css"> #scrollInfo{ height: 600px; overflow: auto; border: 1px solid blue; } #scrollInfo img { width: 300px; height: 300px; display: block; } </style> </head> <body> <div id="content"> <div id="scrollInfo"> <img src="image/bgg.jpg" data-img="image/1.jpg" alt=""> <img src="image/bgg.jpg" data-img="image/2.jpg" alt=""> <img src="image/bgg.jpg" data-img="image/3.jpg" alt=""> <img src="image/bgg.jpg" data-img="image/4.jpg" alt=""> <img src="image/bgg.jpg" data-img="image/5.jpg" alt=""> <img src="image/bgg.jpg" data-img="image/6.jpg" alt=""> <img src="image/bgg.jpg" data-img="image/7.jpg" alt=""> <img src="image/bgg.jpg" data-img="image/8.jpg" alt=""> <img src="image/bgg.jpg" data-img="image/9.jpg" alt=""> </div> </div> </body> </html>