原创 瀑布流插件(动态排序,滚动加载,自适应宽度)

本文介绍了瀑布流布局实现方式,包括代码实现细节、参数设置、以及如何通过自定义属性调整瀑布流高度。

代码很简单  有兴趣可以自行修改

你懂的:http://files.cnblogs.com/bbvi/jquery.Waterfall.zip

//watefallHeight 瀑布流高度    也可以通过$watefallHeight获得
                var watefallHeight = $("#galleryContainer").Watefall(
                {
                    itemMarginLeft: 20,//左间距
                    itemMarginTop: 20,//上间距
                    sortName: "",//排序字段
                    asc_desc:false//排序
                });

 

 

/// <reference path="jquery.js"/>
/*
* Watefall
* version: 1.0.0  2012-7-14
* @ jQuery v1.2.*
*
* ssy
*/
(function ($) {
    $.extend($.fn, {
        Watefall: function (setting) {
            if (typeof (setting) == "undefined") {
                setting = window.$CacheSetting;
            }

            var ps = $.extend({
                itemMarginLeft: 20,
                itemMarginTop: 20,
                sortName: "",
                asc_desc: false
            }, setting);



            window.$CacheSetting = ps;

            var itemWidth = this.children().eq(0).width(); //其中一个孩子的宽度
            var rowsCount = parseInt(this.width() / (itemWidth + ps.itemMarginLeft)); //共多少列
            var itemNum = this.children().length; //多少个孩子


            var sortList = new Array();
            this.children().each(function (i) {
                sortList.push({ "index": parseInt(i), "sorts": ps.sortName == "" ? i : parseInt($(this).attr(ps.sortName)) });
            });


            window.$JsonSort = function (json, asc_desc) {
                return json.sort(function (a, b) { return a.sorts > b.sorts ? -1 * asc_desc : 1 * asc_desc; }); //升序
            }

            $JsonSort(sortList, ps.asc_desc == true ? "1" : "-1");

            this.children().css('position', 'absolute');
            var itemLeft = 0;
            var itemTop = 0;
            var itemHeightList = new Array();
            var shortHeigth = 0;
            var shortRow = 0;
            var itemObj;

            for (var i = 0; i < sortList.length; i++) {
                itemObj = this.children().eq(sortList[i].index);
                if (i < rowsCount) {
                    itemTop = ps.itemMarginTop;
                    itemLeft = (i % rowsCount) * (ps.itemMarginLeft + itemWidth);
                    itemHeightList[i % rowsCount] = itemTop + itemObj.height();
                } else {
                    shortHeigth = itemHeightList[0];
                    shortRow = 0;
                    for (var r = 0; r < itemHeightList.length; r++) {
                        if (shortHeigth > itemHeightList[r]) {
                            shortHeigth = itemHeightList[r];
                            shortRow = r;
                        }
                    }
                    itemTop = shortHeigth + ps.itemMarginTop;
                    itemLeft = shortRow * (itemWidth + ps.itemMarginLeft);
                    itemHeightList[shortRow] += itemObj.height() + ps.itemMarginTop;
                }
                itemObj.stop().animate({ 'left': itemLeft, 'top': itemTop }, 1000);
            }
            window.$watefallHeight = itemHeightList[shortRow];
            return itemHeightList[shortRow];
        }
    })
})(jQuery);

 

转载于:https://www.cnblogs.com/bbvi/archive/2012/07/15/2592700.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值