<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.out {margin: 0 auto;position: relative;}
.in {float: left;}
.in img{margin: 10px;padding: 10px;width: 214px;;border: #ccc solid 1px;border-radius: 5px;box-shadow: 0 0 2px #ccc;}
</style>
</head>
<body>
<div class="out"></div>
</body>
<script>
/*给页面添加div*/
function addDiv(){
/*
1.发起请求;
2.等待请求完成;
3.把数据加进来;
*/
for(var i=0;i<jsonData.src.length;i++){
var div = document.createElement('div');
div.className = 'in';
div.innerHTML = '<img src="img/pbl/'+jsonData.src[i]+'"/>';
outDiv.appendChild(div);
}
}
/*给页面添加瀑布流*/
function addwaterfull(){
/*获取所有的in*/
var inDivs = document.querySelectorAll('.in');
var inW = inDivs[0].offsetWidth;
var num= Math.floor(document.documentElement.clientWidth/inW);
outDiv.style.width = num*inW + 'px';
var heightArr = [];
for(var i=0;i<inDivs.length;i++){
if(i<num){
/*第一行的元素*/
//heightArr[i] = inDivs[i].offsetHeight;
heightArr.push(inDivs[i].offsetHeight);
}else{
/*第二行以后的元素*/
inDivs[i].style.position = 'absolute';
var minHeight = Math.min.apply(null,heightArr);
var minIndex = heightArr.indexOf(minHeight);
inDivs[i].style.left =inDivs[minIndex].offsetLeft +'px';
//inDivs[i].style.left =inW*minIndex +'px';
inDivs[i].style.top = minHeight + 'px';
heightArr[minIndex] = heightArr[minIndex] + inDivs[i].offsetHeight;
}
}
}
/*判断是否需要添加新数据*/
function ifAddData(){
var scrollY = document.body.scrollTop;
var clientH = document.documentElement.clientHeight;
var inDivs = document.querySelectorAll('.in');
var lastDivTop = inDivs[inDivs.length-1].offsetTop;
if (scrollY+clientH>lastDivTop){
return true;
}
}
var jsonStr = '{"src":["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg","8.jpg","9.jpg","10.jpg","11.jpg","12.jpg","13.jpg","14.jpg","15.jpg"]}'
var jsonData = JSON.parse(jsonStr);
var outDiv = document.querySelector('.out');
addDiv();
window.onload = function(){
addwaterfull();
}
window.onscroll = function(){
//console.log(document.documentElement.clientHeight)
if(ifAddData()){
addDiv();
addwaterfull();
}
}
</script>
</html>