简单实现瀑布流布局

效果图和文档结构



<style>

.waterfull {

    width: 1250px;
    margin: 20px auto auto auto;
}
.relative {
    position: relative;
}

.waterfull li {
    position: absolute;
    width: 250px;
    padding-bottom: 10px;
}
.waterfull ul, .waterfull li {
    list-style: none;
    margin: 0px;
    padding: 0px;
}

.waterfull li .item {
    width: 220px;
    margin: auto;
    box-shadow: 0px 1px 2px #bbb;
    background-color: #ffffff;
    white-space: normal;
    word-break: break-all;
    border: 1px solid #ddd;
    line-height: 24px;
}

</style>


<script>

  function waterfull() {
    var doc_w = document.getElementById('waterfull').offsetWidth; // 获取宽度
    var lis = document.getElementsByClassName('waterli'); // 获取页面中定位元素集合
    var li_w = lis[0].offsetWidth; // 获取页面中定位元素的宽度
    var n = Math.floor(doc_w / li_w); // 计算出每一行放置定位元素的个数
    var h = []; // 定义一个数组用来实时记录每列的高度
    for (var i = 0; i < lis.length; i++) {
        var li_h = lis[i].offsetHeight; // 每个定位元素的高度值
        if (i < n) { // 第一行top值都等于0; left 等于定位元素的下标乘以定宽
            lis[i].style.top = 0;
            lis[i].style.left = i * li_w + 'px';
            h[i] = li_h;
        } else if (i > n) {
            h[i] = li_h;
            lis[i].style.left = (i % n) * li_w + 'px';
            lis[i].style.top = h[i - n] + parseInt(lis[i - n].style.top) + 'px';
        } else if (i = n) {
            h[i] = li_h;
            lis[i].style.left = (i % n) * li_w + 'px';
            lis[i].style.top = h[i - n] + parseInt(lis[i - n].style.top) + 'px';
        }
    }
}

</script>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值