就是一些我觉得用jq更加简单的方法用jq又写了一遍,和前面的文章思路什么的都差不多。有些jq封装好的函数更加好用。
代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
<title>hhh</title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
#main{
position: relative;
}
.pin{
float: left;
padding: 15px 0 0 15px;
}
.box{
border-radius: 5px;
box-shadow: 0 0 6px #ccc;
border:1px solid #ccc;
padding: 10px;
}
.box img{
width: 162px;
height:auto;
}
</style>
</head>
<body>
<div id="main">
<div class="pin">
<div class="box">
<img src="images/0.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/1.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/2.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/3.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/4.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/5.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/6.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/7.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/8.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/9.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/10.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/11.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/12.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/13.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/14.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/15.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/16.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/17.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/18.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/19.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/20.jpg">
</div>
</div>
<div class="pin">
<div class="box">
<img src="images/21.jpg">
</div>
</div>
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
var dataint = {'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'}]};
$(function(){
waterfall('pin');
window.onscroll = function(){
if (checkscroll('pin')) {
for (var i = 0; i < 3; i++) {
createdom('pin','box',i);
waterfall('pin');
}debugger;
}
}
})
function waterfall(obj){
var apin = $('.'+obj);
var width = apin[0].offsetWidth;
var awidth = document.documentElement.clientWidth;
var num = Math.floor(awidth/width);
var arr = new Array(num);//创建一个数组用来存放每列的高度
for( var i = 0;i < apin.length;i++){
if (i < num) {
arr[i] = apin[i].offsetHeight;
}
else{
var minh = Math.min.apply(null,arr);//找出一列中最小高度
var index = minhindex(minh,arr);//最小高度的下标值
apin[i].style.position = 'absolute';
apin[i].style.top = arr[index] +'px';
apin[i].style.left = index*width + 'px';
arr[index] += apin[i].offsetHeight;
}
}
}
function minhindex(obj,arr){
for (var i = 0; i < arr.length; i++) {
if (arr[i] == obj) {
return i;
}
}
}
function createdom(parent,child,i){
var oparent ="<div class='" +parent +"' ></div>";
$('#main').append(oparent);
var ochild = "<div class = '"+ child +"'></div>";
$('.'+parent+':last').append(ochild);
var oimg = '<img src="images/'+ dataint.data[i].src + '" />';
$('.'+child+':last').append(oimg);
}
function checkscroll(obj){
var aPin=$('.'+obj);
var lastPinH=aPin[aPin.length-1].offsetTop+Math.floor(aPin[aPin.length-1].offsetHeight/2);//创建【触发添加块框函数waterfall()】的高度:最后一个块框的距离网页顶部+自身高的一半(实现未滚到底就开始加载)
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;//注意解决兼容性
var documentH=document.documentElement.clientHeight;//页面高度
return (lastPinH<scrollTop+documentH)?true:false;//到达指定高度后 返回true,触发waterfall()函数
}
</script>
</body>
</html>