瀑布流函数

在jQuery对象后面添加瀑布流函数
(function($){
    $.fn.waterFall = function(gap){
            // 函数调用对象 jQuery对象
        var $this = $(this),
            // 调用对象子元素集合 jQuery对象
            $items = $this.children(),
            // 总宽度
            sumWidth = $this.width(),
            // 子元素的宽度
            width = $items.width(),
            // 子元素高度
            height = 0,
            // 两个子元素之间的间距 默认20
            gap = gap || 20,
            // 总列数
            column = Math.floor(sumWidth / (width + gap)),
            // 每列的高度数组集合
            arrHeight = [];

        // 遍历子元素
        $items.each(function(key , val){
            // 获取每个子元素的高度
            height = $(val).height();
            // 第一行
            if(key < column){
                // 把第一行的子元素高度添加到数组中
                arrHeight[key] = height;
                // 第一行 子元素 top = 0  left = 为当前索引*(子元素宽度+两个元素之间的间距)
                $(val).css({
                    'top':0,
                    'left':key * (width + gap)
                });
            // 其他行
            }else {
                // 查找高度 最小值
                // 先给以个默认索引 即 0
                var minIndex = 0;
                var minHeight = arrHeight[minIndex];
                // 遍历高度数组
                for(var i in arrHeight){
                    // 判断最小值
                    if(minHeight > arrHeight[i]){
                        // 替换最小值索引及最小值
                        minIndex = i;
                        minHeight = arrHeight[i];
                    }
                }
                // 其他行  top = 每列中的最小值 即最低的那一列 
                $(val).css({
                    'top':minHeight,
                    'left':minIndex * (width + gap)
                });
                // 修改高度数组  最小高度 = 最小高度 + 当前子元素高度
                arrHeight[minIndex] = minHeight + height;
            }
        });

        // 查找高度 最大值
        var maxIndex = 0,
            maxHeight = arrHeight[maxIndex];
        for(var i in arrHeight){
            if(maxHeight < arrHeight[i]){
                maxIndex = i;
                maxHeight = arrHeight[i];
            }
        }
    }
})(jQuery)
   
// 调用函数 
// $('.items').waterFall();

[相关资料][https://github.com/PaddyWang/study/tree/master/瀑布流效果]

posted @   PaddyWang  阅读(302)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
点击右上角即可分享
微信分享提示