H5——移动端JQ实现下拉刷新、上拉加载更多

38 篇文章 3 订阅
23 篇文章 1 订阅

前言

这里用的JQ库里免费插件__dropload,效果图在文末

引入

在这里插入图片描述
去上面链接里面下载内容,可以本地引入

<link rel="stylesheet" href="../dist/dropload.css">
<script src="../dist/dropload.min.js"></script>

最好就放在自己cdn服务器上引入

代码

html这边就,

<div  class="main"      //插件绑定这层
	<div class="imglist   //这层用于渲染列表数据

js :

let me = $('.main').dropload({
        domDown:{
            domClass : 'dropload-down',
            domRefresh : '<div class="dropload-refresh">↑上拉加载更多</div>',
            domLoad : '<div class="dropload-load"><span class="loading"></span>加载中...</div>',
            domNoData : '<div class="dropload-noData">暂无数据</div>',
        },
        domUp:{
            domClass : 'dropload-up',
            domRefresh : '<div class="dropload-refresh">↓下拉刷新</div>',
            domUpdate  : '<div class="dropload-update">↑释放更新</div>',
            domLoad : '<div class="dropload-load"><span class="loading"></span>加载中...</div>',
        },
        // distance  	拉动距离		默认50
        // threshold:	提前加载距离	默认加载区高度2/3
        autoLoad:false,  //是否自动加载,
        //上啦加载更多
        loadDownFn : function(me){
            //模拟请求,载入数据
            setTimeout(() => {
                let b = '<div class="list"> <img src="https://xxxxx/m/active/land5/miaoBest_6.png"  style="height:150px;width:100%"> <p>这是什么鬼啊</p> </div> ';
                $('.imglist').append(b);
                // 每次数据加载完,必须重置、即使加载出错
                me.resetload();
            }, 2000);
        },
        //下拉刷新
        loadUpFn: function(me){
            setTimeout(() => {
                console.log('下拉执行了');
                if(没数据了) {
					me.noData(true) //出现底线文字
					me.lock('down')  //锁定下方。上方是up
				}
                me.resetload();
            }, 2000);
			
			
			me.resetload();
        },
    });

Dom结构
在这里插入图片描述

ps

1.记得给main 设置 overflow-y:srcoll 并且最小高度为667px
2.如果数据列表上面还有东西比如轮播图,那么轮播图和main是同级的,不要把轮播图放进main里面,不然下拉刷新字眼会出现在轮播图上面.
3.<span class="loading"></span>这段代码,作用是让加载中前面的icon动起来,文档的示例代码只是一个普通O字符,并不会动.

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
实现一个移动端的table表格,并且有上拉加载下拉刷新的功能,你可以使用H5的一些特性,例如`<table>`标签、`<div>`标签、`<ul>`标签、`<li>`标签、CSS3动画、JavaScript等。 以下是一个使用HTML、CSS、JavaScript实现的示例代码: HTML: ```html <!-- table表格容器 --> <div id="table-container"> <!-- 下拉刷新提示 --> <div class="pull-down-refresh"> <span class="loading"></span>下拉刷新 </div> <!-- table表格 --> <table> <thead> <tr> <th>Header 1</th> <th>Header 2</th> <th>Header 3</th> </tr> </thead> <tbody id="table-body"> <tr> <td>Item 1-1</td> <td>Item 1-2</td> <td>Item 1-3</td> </tr> <tr> <td>Item 2-1</td> <td>Item 2-2</td> <td>Item 2-3</td> </tr> <tr> <td>Item 3-1</td> <td>Item 3-2</td> <td>Item 3-3</td> </tr> <!-- 省略更多的表格行 --> </tbody> </table> <!-- 上拉加载提示 --> <div class="pull-up-load"> <span class="loading"></span>上拉加载 </div> </div> ``` CSS: ```css /* table表格容器样式 */ #table-container { height: 100%; overflow-y: auto; } /* 下拉刷新提示样式 */ .pull-down-refresh { height: 50px; line-height: 50px; text-align: center; font-size: 14px; color: #888; position: relative; } .pull-down-refresh .loading { display: inline-block; width: 20px; height: 20px; margin-right: 10px; border-radius: 50%; border: 2px solid #ccc; border-top-color: #07c160; animation: rotate 0.6s linear infinite; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } @keyframes rotate { from { transform: rotate(0); } to { transform: rotate(360deg); } } /* 上拉加载提示样式 */ .pull-up-load { height: 50px; line-height: 50px; text-align: center; font-size: 14px; color: #888; position: relative; } .pull-up-load .loading { display: inline-block; width: 20px; height: 20px; margin-right: 10px; border-radius: 50%; border: 2px solid #ccc; border-top-color: #07c160; animation: rotate 0.6s linear infinite; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } ``` JavaScript: ```javascript // 获取table表格 var table = document.querySelector('table'); // 初始化下拉刷新 var startY = 0; // 记录触摸起始位置 var isPullDown = false; // 是否正在下拉刷新 table.addEventListener('touchstart', function(event) { var touch = event.touches[0]; startY = touch.pageY; }, false); table.addEventListener('touchmove', function(event) { if (isPullDown) { return; } var touch = event.touches[0]; var distance = touch.pageY - startY; if (distance > 0 && table.scrollTop == 0) { // 下拉刷新 isPullDown = true; var refresh = document.querySelector('.pull-down-refresh'); var loading = refresh.querySelector('.loading'); loading.style.display = 'inline-block'; refresh.innerHTML = '<span class="loading"></span>正在刷新'; // 模拟加载数据 setTimeout(function() { // 插入新的表格行 var tbody = document.querySelector('#table-body'); var tr = document.createElement('tr'); tr.innerHTML = '<td>New Item 1</td><td>New Item 2</td><td>New Item 3</td>'; tbody.insertBefore(tr, tbody.firstChild); // 结束下拉刷新 loading.style.display = 'none'; refresh.innerHTML = '<span class="loading"></span>下拉刷新'; isPullDown = false; }, 1000); } }, false); // 初始化上拉加载 var isPullUp = false; // 是否正在上拉加载 table.addEventListener('scroll', function(event) { var tbody = document.querySelector('#table-body'); var height = tbody.offsetHeight; var top = table.scrollTop; var clientHeight = table.clientHeight; if (height - top - clientHeight < 50 && !isPullUp) { // 上拉加载 isPullUp = true; var load = document.querySelector('.pull-up-load'); var loading = load.querySelector('.loading'); loading.style.display = 'inline-block'; load.innerHTML = '<span class="loading"></span>正在加载'; // 模拟加载数据 setTimeout(function() { // 插入新的表格行 var tr = document.createElement('tr'); tr.innerHTML = '<td>New Item 1</td><td>New Item 2</td><td>New Item 3</td>'; tbody.appendChild(tr); // 结束上拉加载 loading.style.display = 'none'; load.innerHTML = '<span class="loading"></span>上拉加载'; isPullUp = false; }, 1000); } }, false); ``` 注意:这只是一个简单的示例代码,实际情况可能需要更复杂的代码来满足需求。另外,上拉加载下拉刷新功能需要与后端API接口配合使用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值