html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<link rel="stylesheet" href="./css/style.css">
<body>
<div id="main">
<div class="box">
<div class="pic"><img src="./images/0.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/1.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/2.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/3.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/4.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/5.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/6.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/7.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/8.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/9.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/10.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/11.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/12.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/13.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/14.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/15.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/16.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/17.jpg"></div>
</div>
<div class="box">
<div class="pic"><img src="./images/18.jpg"></div>
</div>
</div>
<script src="./js/waterfall.js"></script>
</body>
</html>
css
*{margin: 0;padding: 0;}
#main{
margin: 0 auto;
position: relative;
}
.box{
padding: 15px 0 0 15px;
float:left;
}
.pic{
padding: 15px;
border: 1px solid #ccc;
box-shadow: 0 0 5px #ccc;
border-radius: 5%;
}
.pic img{
width: 168px;
}
js
window.onload = function(){
watefall("main","box")
window.onscroll =function(){
var data = {
arr:[
{"src":"2.jpg"},
{"src":"3.jpg"},
{"src":"5.jpg"},
{"src":"4.jpg"},
{"src":"8.jpg"},
{"src":"11.jpg"},
{"src":"14.jpg"},
{"src":"20.jpg"},
{"src":"61.jpg"},
]
}
if(scrollTop()){
for(var i=0;i<data.arr.length;i++){
var main = document.getElementById("main");
var oDiv = document.createElement("div");
oDiv.className = "box";
var oPic = document.createElement("div");
oPic.className = "pic";
var oImg = document.createElement("img")
oImg.src = "./images/"+data.arr[i].src+"";
main.appendChild(oDiv);
oDiv.appendChild(oPic);
oPic.appendChild(oImg);
}
}
watefall("main","box")
}
}
function scrollTop(){
var oBox = getClass("box");
var last = oBox[oBox.length-1];
var top = document.body.scrollTop || document.documentElement.scrollTop;
var height = document.body.clientHeight ||document.documentElement.clientHeight;
if(last.offsetHeight/2 + last.offsetTop < top + height){
return true;
}else{
return false;
}
}
function watefall(parent,box){
var oParent = document.getElementById(parent);
var oBox = getClass(box);
var width = document.documentElement.clientWidth || document.body.width;
var boxWidth = (oBox[0].offsetWidth);
var num = Math.floor(width/boxWidth);
oParent.style.width = num*boxWidth+"px";
var hrr = [];
for(var i=0;i<oBox.length;i++){
if(i<num){
hrr.push(oBox[i].offsetHeight);
}else{
var min = Math.min.apply(null,hrr);
var index = inArry(min,hrr)
oBox[i].style.position = "absolute";
oBox[i].style.left = index * boxWidth + "px";
oBox[i].style.top = min+"px";
hrr[index] += oBox[i].offsetHeight;
}
}
}
function inArry(min,hrr){
for(var i=0;i<hrr.length;i++){
if(hrr[i] == min){
return i;
}
}
}
function getClass(box){
var reg = new RegExp("\\b"+ box + "\\b");
var arr = [];
var doms = document.getElementsByTagName("*");
for(var i=0;i<doms.length;i++){
if(reg.test(doms[i].className)){
arr.push(doms[i]);
}
}
return arr;
}