• 实现一个 瀑布流 封装until 工具



     

    until 封装

    /**
     * @name 瀑布流插件
     * @param { parent } dom 瀑布流的父节点
     * @param { son } 瀑布流子节点
     * @param { col } 瀑布流有几列
     * @param { gap } 子节点的间距
     */

    function waterfall (parent, son, col, gap) {
        // 获取父节点
        var con = document.querySelector(parent);
        // 父节点相对定位
        con.style.position = "relative";
        // 获取所有的子节点
        var items = document.querySelectorAll(son);
        // 定义一个数组用于记录每列的最小值
        var arr = [];
        // 控制有几列
        arr.length = col
        // 数组填充0
        arr.fill(0)
        // 定义每个子元素的宽度
        var w = (con.offsetWidth-(col+1)*gap) / col
        for(var i = 0;i
            items[i].style.position = "absolute";
            items[i].style.width = w+"px";
            // 查找最小数据
            var min = Math.min(...arr)
            // 最小数据的下标  也就是第几列
            var minIndex = arr.indexOf(min)
            items[i].style.top = min + "px"
            items[i].style.left = (minIndex * w + (minIndex+1)*gap) + "px"
            // 修改arr的最小值
            arr[minIndex] = min + items[i].offsetHeight + gap
            con.style.height = arr[minIndex] + "px"
        }
    }
    export default waterfall

  • 相关阅读:
    读懂css属性值
    基于SpringBoot的“幼儿园管理系统”的设计与实现(源码+数据库+文档+PPT)
    C# BackgroundWorker用法详解(源码可直接使用)
    [动手学深度学习]生成对抗网络GAN学习笔记
    C++:关联性容器及底层实现
    移动机器人运动规划 | 基于图搜索的Dijkstra 和 A*算法详解
    Linux 基础-文件属性与权限
    Netty数据存储分析和经典问题之粘包拆包解决方案
    【Chatgpt大语言模型医学领域中如何应用】
    京东API接口的应用场景:商品信息查询,商品详情获取
  • 原文地址:https://blog.csdn.net/lyinshaofeng/article/details/127060628