懒加载
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var width;
var clientWidth;
var num=3;
var list=[];
var heightList=[];
const COL=5;
const GAP=10;
init();
function init(){
document.body.style.margin="0px";
var ul=ce("ul",{
listStyle:"none",
margin:"0px",
padding:"0px"
});
clientWidth=document.documentElement.clientWidth;
width=(clientWidth-(COL-1)*GAP-1)/COL;
for(var i=0;i<COL;i++){
var li=ce("li",{
float:"left",
width:width+"px",
marginLeft:i===0 ? "0px" : GAP+"px"
});
heightList.push(0);
ul.appendChild(li);
list.push(li);
}
document.body.appendChild(ul);
loadImage();
window.addEventListener("resize",resizeHandler);
document.addEventListener("scroll",scrollHandler);
}
function loadImage(){
var img=new Image();
img.addEventListener("load",loadHandler);
img.src=`./img/${num}-.jpg`;
}
function loadHandler(e){
this.removeEventListener("load",loadHandler);
var scale=this.height/this.width;
var height=scale*width;
this.style.width=width+"px";
this.style.height=height+"px";
this.scale=scale;
var min=Math.min.apply(null,heightList);
var index=heightList.indexOf(min);
list[index].appendChild(this);
heightList[index]+=height;
if(clientWidth!==document.documentElement.clientWidth){
clientWidth=document.documentElement.clientWidth;
resizeHandler();
}
if(document.body.scrollHeight>document.documentElement.clientHeight*4){
return;
}
num++;
if(num>79) num=3;
loadImage();
}
function scrollHandler(e){
if(document.documentElement.scrollHeight-document.documentElement.scrollTop<document.documentElement.clientHeight*2){
num++;
if(num>79) num=3;
loadImage();
}
}
function ce(type,style){
var elem=document.createElement(type);
Object.assign(elem.style,style);
return elem;
}
function resizeHandler(e){
width=(document.documentElement.clientWidth-(COL-1)*GAP-1)/COL;
for(var i=0;i<list.length;i++){
list[i].style.width=width+"px";
for(var j=0;j<list[i].children.length;j++){
var img=list[i].children[j];
img.style.width=width+"px";
img.style.height=width*img.scale+"px";
}
}
}
</script>
</body>
</html>