自定义基于jquery竖向瀑布流插件

公司新项目做了一个关于图片的板块,网上找了一些瀑布流插件都不是很适合自己,于是就自己造轮子写一个,并封装成插件github

于是就想分享一下,主要是为了更好的学习与记忆。

如果大家进来了,希望能给我github点个免费star,你轻轻的来,不要悄悄的走嘛。感谢大佬- -

下面介绍一下(也可以去github看)

jquery-waterfall

  • 一款简单jq插件,配载es6语法的竖向瀑布流

插件特点:

  • 数据灵活,可以后台请求数据载入页面也可以直接在html中加入元素,一般放第一页
  • 同个页面可以放置多个,使用tab切换无刷新
  • 页面滚动至底部前自动请求加载数据
  • 数据底部动态生成加载提示或已加载结束
  • 可配置是否适应resize,通用pc到手机响应式
  • 自定义瀑布流元素之间间距,内容根据样式宽度自适应放入数量
  • es6语法promise函数,保证图片加载后布局

插件依赖

  • jQuery 2.1.4
  • 插件环境es6语法,浏览器中需要babel转义

使用方法

  1. 在jquery.js后引入
  2. 自定义瀑布流容器,设置初始高度,需要相对定位
  3. 自定义瀑布流元素,定义宽度与默认样式,高度根据图片自适应(默认class="item")
  4. 容器调用插件方法

// 接受参数
/*
    ** item: '.item',  瀑布流元素类名
    ** spaceBetween: 10, 元素间距
    ** resize: true, 是否根据窗口自适应
    ** checkNav: '', 这边是当有tab切换,tab元素父容器
    ** ajaxData: null, 滚动加载数据自定义函数,处理数据方法等,自定义方便使用
    ** tipObj: { 动态加载数据底部提示框
        tipDom: '#no-data',
        text0: '已经到底啦~',
        text1: '↓ 下拉加载更多',
    }, 

*/

// ajaxData: fn(success) ,这里回调函数接受一个函数参数,数据获取成功需要主动调用一下
// 如果有数据 success(str, 1), 没有数据success('', 0)
// str 是你这里处理过返回瀑布流元素字符串


// 举例

// 瀑布流元素
let template = `
    <li class="item" data-id="{ id }">
        <a href="{ url }" title="{ title }">
            <img src="{ thumb }" title="{ title }">
            <div class="mask">
                <div class="img-operate">
                    <span class="collect"><i class="icon-collect"></i></span>
                    <span class="download-other fr">源文件</span>
                    <span class="download-jpg fr">原图</span>
                </div>
                <div class="img-title common_ovh">{ title }</div>
            </div>
        </a>
    </li>`;
let curPage = 2, filterData = { 一些数据 };

// 后台获取数据接口方法
function getListAjax(callback) {
        let data = filterData;
        data.page = curPage;

        $.ajax({
            url: '/api/get_photo_list',
            type: 'POST',
            data: data,
        })
        .done(function(res) {
            let str = "";
            if(res.code == 200) {
                $.each(res.data, function(index, el) {
                    str += template
                        .replace("{ thumb }", el.thumb)
                        .replace("{ id }", el.id)
                        .replace("{ url }", el.url)
                        .replace(/{ title }/g, el.title)
                });

                curPage++;
            }
            callback(res, str)
        })
        .fail(function(error) {
            console.log(error);
        })
    };

容器.toWaterfall({
        ajaxData: function(success) {
            getListAjax(function(res, str) {
                if(res.code == 200) {
                    $bigSmall.append($(str));
                    success(str, res.next);
                }else {
                    success('', 0);
                }
            })
        }
    })


效果图

效果图1

效果图1

项目地址在www.macdown.com 素材分支里

转载于:https://www.cnblogs.com/mrzll/p/10475664.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值