前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jQuery 实现瀑布流 个人完美版

jQuery 实现瀑布流 个人完美版

作者头像
FungLeo
发布2022-05-05 20:50:26
9410
发布2022-05-05 20:50:26
举报

前面已经通过这种方式实现过瀑布流了。看到慕课网上有一个类似的视频教程,就仔细看了一下。就大体实现思路来说,基本是没差的。但是就实现方法来说,慕课网上的教程(http://www.imooc.com/learn/101)我感觉还是繁琐冗余了。尤其是javascript原生实现方法。 但其jquery方法,我还是学到一点的。就是如何查找数值在数组中的索引。

html+css结构

查看:http://blog.csdn.net/fungleo/article/details/49179611

jQuery实现瀑布流

代码语言:javascript
复制
$(function(){
    var Obj = $("#waterfall"),
        Ul = Obj.children('ul'),
        Li = Ul.children('li');
    $(window).load(function(event) {
        waterfall();
    });
    $(window).resize(function(event) {
        waterfall();
    });
    function waterfall(){
        var WinW = $(window).width();
        var Blank = 20,                     // 每个图片之间的间隔留白
            LiW = 200+Blank,                // 一个图片距离上一个图片的宽度距离
            LiCol = parseInt(WinW/LiW),     // 计算在当前窗口下,有几列
            UlW = LiCol*LiW-Blank;          // 根据有几列,设定总的宽度(减掉最后一个留白)
        Ul.width(UlW);

        var AllLi = [];                     // 建立一个空数组变量
        Li.each(function(index, e){
            var T = $(this);
            if (index<LiCol) {                      // 第一行的处理
                AllLi[index] = T.outerHeight();     // 给数组添加内容,为当前元素的高度值
                T.css({
                    top: 0,
                    left: LiW*index+'px'
                });
            } else{
                var MinH = Math.min.apply(null,AllLi);      // 找到数组中,最小的那个值(也就是留白最大的)
                var MinI = $.inArray(MinH,AllLi);			// 通过 $.inArray 查找数值在数组中的索引
                var ThisH = T.outerHeight()+Blank;          // 自身的高度加上留白

                AllLi[MinI] = parseInt(MinH+ThisH);         // 将被占位的数组重新赋值

                T.css({
                    top: MinH+Blank+'px',
                    left: LiW*MinI+'px'
                });
            };
        });
    }
})

效果预览地址:http://sandbox.runjs.cn/show/zwqw5o2d 这个是原生js的效果。jquery的和他一样。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • html+css结构
  • jQuery实现瀑布流
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档