瀑布流

瀑布流思想
瀑布流就是我们放好第一行,从第二行放,就找列的高度最小,就把第二行的第一张放在高度最小的那一列下面,以此类推,接下来放图就根据这个标准,这样是为了我们放的张数越多,保证每一列的高度都相近。哈哈,这是我自己总结的,方法不止这一种。下面是代码:

/*HTML代码*/
<div id="container">
        <div class="box">
            <div class="item">
                <img src="img/1.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/2.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/3.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/4.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/5.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/6.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/7.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/8.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/9.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/10.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/11.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/12.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/13.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/14.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/15.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/16.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/17.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/18.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/19.jpg"/>
            </div>
        </div>
        <div class="box">
            <div class="item">
                <img src="img/20.jpg"/>
            </div>
        </div>

    </div>
/*css代码*/
<style>
    div{position:relative;}
    .box{height:auto;padding:2px;float:left;}

    .item{border:#ddd solid 1px;
        border-radius:8px;box-shadow:2px 2px 2px 0 #ccc;padding:5px;
        overflow:hidden;}

    div>img{width:200px;height:auto;border-radius:5px;}
 </style>
/*js代码*/
<script>

        window.onload = function(){
            //一行可以放几张图片
            var clientWidth = document.documentElement.clientWidth;
            console.log(clientWidth);

            //第一个盒子的宽度

            var firstBox = document.querySelector('.box');
            console.log(firstBox);
            var boxWidth = firstBox.offsetWidth;

            //列数
            var col = parseInt(clientWidth/boxWidth);
            console.log(col);


            //数组记录第一行所有列的高度

            var colHeightArray = [];
            var boxs = document.querySelectorAll('.box');
            for (let i = 0; i < col; i++) {
                let box = boxs[i];
                colHeightArray.push(box.offsetHeight);
            }
            console.log(colHeightArray);

            //第一列之外的所有图片

            for (let j = col; j < boxs.length; j++) {
                let box = boxs[j];
                console.log(box);

                //放在哪一列,求数组中的最小值,和最小值所在下标
                var min = Math.min(...colHeightArray);
                var minIndex = colHeightArray.indexOf(min);
                console.log(min,minIndex);

                var x = minIndex * boxWidth;
                var y = min;
                box.style.position = 'absolute';
                box.style.left = x + 'px';
                box.style.top = y + 'px';

                //更新数组中对应的高度
                colHeightArray[minIndex] = colHeightArray[minIndex] + box.offsetHeight;
            }

        }       

</script>

效果图
效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值