jquery瀑布流布局

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>jquery瀑布流布局</title>
<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<style>
* {
    margin:0;
    padding:0;
}
#main {
    position:relative;
}
.box {
    padding:15px 0 0 15px;
    float:left;
}
.pic {
    padding:10px;
    border:1px solid #ccc;
    border-radius:5px;
    border-shadow:0 0 5px #ccc;
}
.pic img {
    width:165px;
    height:auto;
}
</style>
</head>
<body>
<div id="main">
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x500-1.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x500-1.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x300-1.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x300-2.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/300x500-1.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/300x500-2.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x300-9.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x500-9.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x300-8.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/300x500-7.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x300-6.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x300-4.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x500-4.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x300-9.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x300-9.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x500-6.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x500-1.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/300x500-1.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x500-1.png">
        </div>
    </div>
    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/300x500-1.png">
        </div>
    </div>

    <div class="box">
        <div class="pic">
            <img src="http://www.jq22.com/img/cs/500x500-1.png">
        </div>
    </div>
</div>


<script>
/**
 * Created by zyn on 2017/6/8.
 */
$(window).on('load', function() {
    waterfall();
    var dataInt = {
        "data": [{
            "src": "http://www.jq22.com/img/cs/500x500-1.png"
        }, {
            "src": "http://www.jq22.com/img/cs/500x300-2.png"
        }, {
            "src": "http://www.jq22.com/img/cs/300x500-9.png"
        }]
    };
    $(window).on('scroll', function() {
        if (checkScrollSlide) {
            $.each(dataInt.data, function(key, value) {
                //  console.log(value);
                var oBox = $('<div>').addClass('box').appendTo($('#main'));
                var oPic = $('<div>').addClass('pic').appendTo($(oBox));
                var oImg = $('<img>').attr('src', $(value).attr('src')).appendTo($(oPic));
            })
            waterfall();
        }
    })
})

function waterfall() {
    var $boxs = $('#main>div');
    var w = $boxs.eq(0).outerWidth();
    var cols = Math.floor($(window).width() / w);
    $('#main').width(w * cols).css('margin', '0 auto');
    var hArr = [];
    $boxs.each(function(index, value) {
        //console.log(index);
        var h = $boxs.eq(index).outerHeight();
        if (index < cols) {
            hArr[index] = h;
        } else {
            var minH = Math.min.apply(null, hArr);
            var minHIndex = $.inArray(minH, hArr);
            //console.log(value);
            $(value).css({
                'position': 'absolute',
                'top': minH + 'px',
                'left': minHIndex * w + 'px'
            })
            hArr[minHIndex] += $boxs.eq(index).outerHeight();
        }
    })
    //console.log(hArr);
}

function checkScrollSlide() {
    var $lastBox = $('#main>div').last();
    var lastBoxDis = $lastBox.offset().top + Math.floor($lastBox.outerHeight() / 2);
    var scrollTop = $(window).scrollTop();
    var documentH = $(window).height();
    return (lastBoxDis < scrollTop + documentH) ? true : false;
}
</script>

</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值