jquery实现瀑布流布局

原创2016-11-08 11:07:11229
摘要:<!DOCTYPE html>   <html>   <head>       <meta charset="UTF-8">       <title></title>
<!DOCTYPE html>
 
<html>
 
<head>
 
    <meta charset="UTF-8">
 
    <title></title>
 
    <link rel="stylesheet" href="index.css"/>
 
    <script src="jquery-1.7.1.min.js"></script>
 
    <script src="index.js"></script>
 
</head>
 
<body>
 
<div>
 
    <div><img src="imgs/1.jpg" alt=""/></div>
 
    <div><img src="imgs/2.jpg" alt=""/></div>
 
    <div><img src="imgs/3.jpg" alt=""/></div>
 
    <div><img src="imgs/4.jpg" alt=""/></div>
 
    <div><img src="imgs/5.jpg" alt=""/></div>
 
    <div><img src="imgs/6.jpg" alt=""/></div>
 
    <div><img src="imgs/7.jpg" alt=""/></div>
 
    <div><img src="imgs/8.jpg" alt=""/></div>
 
    <div><img src="imgs/9.jpg" alt=""/></div>
 
    <div><img src="imgs/10.jpg" alt=""/></div>
 
    <div><img src="imgs/11.jpg" alt=""/></div>
 
    <div><img src="imgs/12.jpg" alt=""/></div>
 
    <div><img src="imgs/13.jpg" alt=""/></div>
 
    <div><img src="imgs/14.jpg" alt=""/></div>
 
    <div><img src="imgs/15.jpg" alt=""/></div>
 
    <div><img src="imgs/16.jpg" alt=""/></div>
 
    <div><img src="imgs/17.jpg" alt=""/></div>
 
    <div><img src="imgs/18.jpg" alt=""/></div>
 
    <div><img src="imgs/19.jpg" alt=""/></div>
 
    <div><img src="imgs/20.jpg" alt=""/></div>
 
    <div><img src="imgs/21.jpg" alt=""/></div>
 
    <div><img src="imgs/22.jpg" alt=""/></div>
 
    <div><img src="imgs/23.jpg" alt=""/></div>
 
    <div><img src="imgs/24.jpg" alt=""/></div>
 
    <div><img src="imgs/25.jpg" alt=""/></div>
 
    <div><img src="imgs/26.jpg" alt=""/></div>
 
    <div><img src="imgs/27.jpg" alt=""/></div>
 
    <div><img src="imgs/28.jpg" alt=""/></div>
 
</div>
 
</body>
 
</html>
 
css:
 
*{
 
    margin: 0;
 
    padding: 0;
 
}
 
.walterfull{
 
    position: relative;
 
}
 
.box{
 
    float: left;
 
    padding: 10px;
 
    border: 1px solid #ccc;
 
    margin: 15px 0 0 15px;
 
    box-shadow: 0 0 5px pink;
 
}
 
img{
 
    width: 180px;
 
}
 
js:
 
/**
 
 * Created by ll0u on 1/7/2015.
 
 */
 
$(window).load(function(){
 
    walterFall();
 
    $(window).on('scroll', function(){
 
        if(checkLoad()){
 
            var boxList = $('.walterfull>.box');
 
            $.each(data.imgs, function(index, value){
 
                var oBox = $('<div>').addClass('box').appendTo($('.walterfull'));
 
                var oImg = $('<img>').attr('src', value.url).appendTo(oBox);
 
                minH = Math.min.apply(null, colH);
 
                minHIndex = $.inArray(minH, colH);
 
                console.log(minH)
 
                console.log(boxList.eq(minHIndex).position().left)
 
                oBox.css({
 
                    position: 'absolute',
 
                    top: minH,
 
                    left: boxList.eq(minHIndex).position().left
 
                })
 
                colH[minHIndex] += oBox.outerHeight(true);
 
            })
 
        }else{
 
 
        }
 
    })
 
})
 
 
var data = {imgs:
 
    [
 
        {url: 'imgs/28.jpg'},
 
        {url: 'imgs/29.jpg'},
 
        {url: 'imgs/30.jpg'},
 
        {url: 'imgs/31.jpg'},
 
        {url: 'imgs/32.jpg'}
 
    ]
 
}
 
var colH = []; //存放每一列的高度
 
var minH = 0; //存放最小高度
 
function walterFall(){
 
    var oParent = $('.walterfull');
 
    var boxList = $('.walterfull>.box');
 
    var screenW = $(window).width();
 
    var screenH = $(window).height();
 
    var boxW = boxList.eq(0).outerWidth(true);
 
    var columns = Math.floor(screenW/boxW);
 
    var minHIndex = 0; //存放最小高度的列
 
    oParent.css({
 
        width: columns * boxW + parseInt($(boxList[0]).css('marginLeft')),
 
        margin: '0 auto'
 
    })
 
    boxList.each(function(index, dom){
 
        if(index < columns){
 
            colH.push($(dom).outerHeight(true));
 
        }else{
 
            minH = Math.min.apply(null, colH);
 
            minHIndex = $.inArray(minH, colH);
 
            $(dom).css({
 
                position: 'absolute',
 
                top: minH,
 
                left: boxList.eq(minHIndex).position().left
 
            })
 
            colH[minHIndex] += $(dom).outerHeight(true);
 
        }
 
    })
 
}
 
function checkLoad(){
 
    var lastBox = $('.walterfull>.box').last();
 
    var disT = lastBox.offset().top + Math.floor(lastBox.outerHeight(true)/2);
 
    var screenT = $(window).height() + $(window).scrollTop();
 
    return disT<screenT ? true : false;
 
}


发布手记

热门词条