首页 > 其他分享 >瀑布流(从左到右-完美方式)

瀑布流(从左到右-完美方式)

时间:2023-04-11 12:14:16浏览次数:39  
标签:index 盒子 完美 从左到右 高度 colItemHeight item 瀑布 var

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>瀑布流--从左边到右排列(复制代码可直接运行,图片在本地无法正常加载请替换)</title>
</head>
<body style="padding: 10px">

<style type="text/css">
    body {
        margin: 0;
        padding: 0;
    }

    .water-basic {
        position: relative;
    }
    .item {
        position: absolute;
        width: 200px;
        margin: 5px;
        height: auto;
        transition: all 1s;
        background-color: rgb(227, 227, 227);
    }
    img{
        max-width: 200px;
    }
</style>
<div class="water-basic">
    <div class="item box1">1
        <img src="image/demo.png"/>
    </div>
    <div class="item box2">2
        <img src="image/1.jpg"/>
    </div>
    <div class="item box1">3
        <img src="image/qiyu3-4K-blur.jpg"/>
    </div>
    <div class="item box4">4
        <img src="image/demo.png"/>
    </div>
    <div class="item box5">5
        <img src="image/1.jpg"/>
    </div>
    <div class="item box3">6
        <img src="image/2.jpg"/>
    </div>
    <div class="item box2">7</div>
    <div class="item box1">8
        <img src="image/qiyu3-4K-blur.jpg"/>
    </div>
    <div class="item box1">9</div>
    <div class="item box2">10</div>
    <div class="item box4">11
        <img src="image/qiyu3-4K-blur.jpg"/>
    </div>
    <div class="item box3">12</div>
    <div class="item box1">13</div>
    <div class="item box5">14</div>
    <div class="item box2">15</div>
    <div class="item box1">16</div>
    <div class="item box3">17</div>
    <div class="item box1">18</div>
    <div class="item box2">19</div>
</div>

<script>
    var test = (function init() {
        // 1、获取所有的盒子  宽度都是固定的
        var node = document.querySelectorAll('.item');
        // 2、获取第一个盒子的宽度+外边距
        var nodeWidth = node[0].offsetWidth + 10;
        // 3、这里根据浏览器视口大小进行动态更新展示一排显示的个数
        // let _obj = document.querySelector('.water-basic');  // 指定宽度 需要设置water-basic最大宽度
        let _obj = document.body;  // 整个浏览器视口大小
        var colCount = parseInt(_obj.offsetWidth / nodeWidth);
        // 4、定义一个数组保存最后一排的高度
        var colItemHeight = [];
        // 5、默认第一排都是为0
        for (var j = 0; j < colCount; j++) {
            colItemHeight.push(0);
        }
        // 6、遍历所有的盒子
        node.forEach(function (item) {
            // 7、假设第一排第一个为最小的高度
            var minHeight = colItemHeight[0];
            // 8、保存最小高度盒子的索引值
            var index = 0;
            // 9、遍历最新高度的数组
            colItemHeight.forEach(function (pro, idx) {
                // 10、判断最小高度是不是大于当前遍历到的高度
                if (minHeight > pro) {
                    // 11、如果条件成立  将当前最小的高度重新复制给最小高度变量
                    minHeight = pro;
                    // 12、同时更新当前最小高度盒子的索引
                    index = idx;
                }
            })
            // 13、获取到最小高度的盒子后  开始设置盒子的定位
            item.style.top = minHeight + 'px';
            item.style.left = (nodeWidth * index) + 'px';

            // 14、动态更新当前遍历的盒子的高度+外边距+最小盒子的高度
            colItemHeight[index] = (item.offsetHeight + 10) + colItemHeight[index];
        })
        return {init}
    })()

    document.body.onresize = function () {
        test.init();
    }

</script>

</body>
</html>

 

原文链接:https://blog.csdn.net/weixin_41535944/article/details/119543848

标签:index,盒子,完美,从左到右,高度,colItemHeight,item,瀑布,var
From: https://www.cnblogs.com/LindaBlog/p/17305796.html

相关文章

  • 瀑布流布局
    window.onload=function(){constwaterfall=document.getElementById('waterfall');constitems=waterfall.querySelectorAll('.waterfall-item');constcolumnCount=3;constcolumnHeights=newArray(columnCount).fill(0);f......
  • “亘古通今日臻完美”联通七星&中央大街华为P60—百年显风情
    中央大街是哈尔滨的缩影,哈尔滨的独特建筑文化和哈尔滨人的欧式生活,都在这里明显的体现,它,被誉为“亚洲第一街”。近日,七星手机连锁&华为公司开展“亘古通今,日臻完美”系列主题活动。本次活动邀约哈尔滨中央大街商会会员,黑龙江画家协会的客户,把现代最高科技与百年中央大街文化相结合,......
  • 如何打造一个适合现代企业的完美业务模型?
    容量场景中,每个业务比例都要符合真实业务场景的比例。不符合,那场景的执行结果也没意义。但很多性能人员因为对业务模型的抽取过程不了解或拿不到具体数据,导致业务模型和生产业务场景不匹配,整个性能项目都变得无意义也有大量项目,并没有拿历史业务数据做统计,直接非常笼统地拍脑袋,给出......
  • 完美的模板CSS
    body{ margin:0px; padding:0px;}.left{ background:#313541; width:20%; float:left; position:absolute; top:0px; bottom:0px;}.top{ width:80%; float:right; height:100px; line-height:100px; border-bottom:1pxsolid#b0cdff;}.content{ float:r......
  • python_PIL图片拼接,符合需求但不完美!!
    仅能符合需求的图片拼接工具。。。使用第三方包为:importtkinterastkfromtkinterimportEntry,ButtonfromtkinterimportfiledialogfromPILimportImage工具的样子:图片拼接示例首先选择多个需要拼接的图片,然后回自动调整图片的宽度比,纵向拼接 拼接后就是这个样子......
  • 华为OD机试 获得完美走位
    本期题目:获得完美走位题目在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。假设玩家每按动一次键盘,游戏人物会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人物必定会......
  • 完美谢幕,这就是科比!
    昨天的一篇文章「再见科比,再见逝去的青春」导致不少人取关,是最近取关人数最多的一篇文章了。也许你觉得我有点矫情,也许你根本不认识科比,但是这就是科比影响我的地方,我就是这么任性,爱我或者恨我,我依然过着我的生活!冒着取关的风险,我依然要写篇文章来纪念下这场伟大的比赛。看到最后真......
  • 属于[n,2n]的完美平方
    证明[r,2r]中最少有一个完美平方链接假设要求属于[r,2r]区间的一个完美平方,那么按照以下代码,s将是一个[r,2r]中的完美平方//[r,2*r]ints=sqrt(2*r);s*=s;......
  • 如何做一次完美的 ABTest?
    作者:DuZhimin越来越多的公司都在尝试ABTest,要么是自己搭建系统,要么依赖于第三方的系统。那么在我们进行ABTest的时候,必备的基础知识有哪些?该如何一步一步的进行AB实验呢?本文将根据AB实验的流程带领大家一窥究竟。一、引言在互联网公司的业务发展过程中,用户增长是永恒的主题,因为......
  • AirCassette音乐应用:复古情愫与现代社交元素的完美融合
    随着iPod和iPhone等现代设备的涌现,音乐已变得无处不在。在享受数字音乐带来的轻松体验时,是否也会偶尔怀念那个老式随身听和磁带的年代?AirCassette就是这样一款融合了怀旧情感和现代社交元素的iOS音乐应用。通过这款时尚的应用,用户可在播放数字音乐时体验磁带带来的视觉享受,同时......