瀑布流布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>瀑布流</title>
<style>
*{margin: 0;padding: 0;}
#container{
    width: 1000px;border: 1px solid red;margin: 50px auto 0;
    position: relative;
}
#container img{
    position: absolute;
}
#loader{
    width: 100%;height: 60px;background: url('01.jpg') no-repeat center #FFF;position: fixed;bottom: 0;left: 0;display: 
}
</style>
<script src="../jquery.min.js" type="text/javascript" ></script>
<script>
$(function () {
var iWidth=200,  //列宽
    iSpace=10,   //间隔宽
    iOuterWidth=iWidth+iSpace,   //列实际宽
    oContainer=$("#container"),
    oLoader=$("#loader");
var iCells=0,   //总列
    iPage=0;
var sUrl="http://www.wookmark.com/api/json/popular?callback=?"  ;
var arrL=[],
    arrT=[];
var iBtn=true;


function setCells () {
    iCells=Math.floor($(window).innerWidth()/iOuterWidth);
    document.title=iCells;
    oContainer.css("width",iOuterWidth*iCells-iSpace);
}

setCells();
for (var i = 0; i < iCells; i++) {
    arrT.push(0)
    arrL.push(i*iOuterWidth);
}
//console.log(arrT);

function getData () {
    if(iBtn){
        iBtn=false;
        oLoader.show();
        $.getJSON(sUrl, "page="+iPage, function(data) {
        //console.log(data);
        $.each(data,function (index,obj) {
            var oImg=$("<img/>");
            oImg.attr('src', obj.preview);
            oContainer.append(oImg);
            var iHeight=iWidth/obj.width*obj.height;
            oImg.css({
                width:iWidth,
                height:iHeight
            });
            //获取arrT最小所在位置
            var iMinIndex=getMin();
        // 设置定位
            oImg.css({
                left:arrL[iMinIndex],
                top:arrT[iMinIndex]
            });
            arrT[iMinIndex]+=iHeight+10;
            oLoader.hide();
            iBtn=true;
            });
        });
    }
}
getData();
$(window).on("scroll",function () {
    var iH=$(window).scrollTop()+$(window).innerHeight();
    var iMinIndex=getMin();
    if (arrT[iMinIndex]+oContainer.offset().top<iH) {
        iPage++;
        getData();
    }
});

function getMin () {
    var iv=arrT[0];
    var _index=0;
    for (var i = 1; i < arrT.length; i++) {
        if(arrT[i]<iv){
            iv=arrT[i];
            _index=i;
        }
    }
    return _index;
}

});
</script>
</head>
<body>
    <div id="container"></div>
    <div id="loader"></div>
</body>
</html>

转载于:https://my.oschina.net/u/3373793/blog/875071

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值