html下拉自动加载更多,H5页面下拉加载更多(实用版)
近期在做一个H5网站,需要下拉加载更多产品列表的功能。百度搜索了好久,什么说法都有,什么插件都有。 醉了。基本上每一个能直接拿来用的。
最后发现:
1、dropload.js 插件 还可以,但是有个问题,只能单页使用比较方便。带有tab标签的不推荐使用。
2、自己百度了半天总结出来的一套:
document.addEventListener('scroll', watchScroll);
var itemIndex = 0;
var classid = 10;
var isloading = 0;//防止无限滚动加载
var page = $("#page").val();//页码
loadDataDynamic();//加载数据
$(function () {
$('.tab').bind('click', function () {// tab导航绑定点击事件
document.body.scrollTop = 0;//首先复位顶部
var $this = $(this);
itemIndex = $this.index();
$this.addClass('weui_bar_item_on c_f8').siblings('.tab').removeClass('weui_bar_item_on c_f8');//添加选中样式
$('.itme').eq(itemIndex).show().siblings('.itme').hide(); //切换显示div
classid = this.attributes.dataid.value;
page = 1;//页数复位
loadDataDynamic();
});
});
//加载数据
function loadDataDynamic() {
//先显示正在加载中
if ($("#loadingLi").length === 0)
$(".itme:visible>ul").append("
正在加载...
");
else {
$("#loadingLi").text("正在加载...").removeClass("space");
}
var loadingLi = document.getElementById("loadingLi");
var msg = "";
$.ajax({
url: "/Handler/xxx.aspx?cmd=GetGameListByClass",
type: "get",
async:false,
data: { classid: classid, page: page },
dataType: "json",
beforeSend: function () { isloading = 1; },
success: function (data) {
if (data.r) {
//这边根据自己的展示需求来 修改一下。
if (page == "1") {
// 插入数据到页面
$('.itme:visible>ul').html(decodeURIComponent(data.r));
msg = "数据已加载到底了.";
} else {
$('.itme:visible>ul').append(decodeURIComponent(data.r));
}
$("#page").val(page++);
isloading = 0;
} else {
$(".itme:visible>ul").scrollTop(document.body.scrollTop - 20);
if (page == 1) {
$(".itme:visible>ul").html("
暂无数据
");
} else {
msg = "数据已加载到底了";
}
}
$(".itme:visible>ul").append(loadingLi);
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
msg = "数据加载失败!";
}, complete: function () {
if (page > 1) {
$("#loadingLi").text(msg);
} else {
$("#loadingLi").text("");
}
}
});
}
//如果滚动条滚动到页面底部,需要加载新的数据,并且显示加载提示
function watchScroll() {
if (!isScrollToPageBottom()) {
return;
}
loadDataDynamic();
}
//作为一个对象的w和h属性返回视口的尺寸
function getViewportSize(w) {
//使用指定的窗口, 如果不带参数则使用当前窗口
w = w || window;
//除了IE8及更早的版本以外,其他浏览器都能用
if (w.innerWidth != null)
return { w: w.innerWidth, h: w.innerHeight };
//对标准模式下的IE(或任意浏览器)
var d = w.document;
if (document.compatMode == "CSS1Compat")
return { w: d.documentElement.clientWidth, h: d.documentElement.clientHeight };
//对怪异模式下的浏览器
return { w: d.body.clientWidth, h: d.body.clientHeight };
}
//检测滚动条是否滚动到页面底部
function isScrollToPageBottom() {
//文档高度
var documentHeight = document.documentElement.offsetHeight;
var viewPortHeight = getViewportSize().h;
var scrollHeight = window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop || 0;
return (documentHeight - viewPortHeight - scrollHeight < 20)&& isloading == 0;//这个蛮重要的
}
写的有不足的地方可以指出来,后期优化。
效果图展示: 真实案例
参考来源 : http://www.cnblogs.com/w-wanglei/p/5863387.html
H5 页面下拉加载更多
1.html页面:
... 2.js
html下拉自动加载更多,H5页面下拉加载更多(实用版)相关推荐
- ios系统微信浏览器、safari浏览器中h5页面上拉下滑导致悬浮层脱离窗口的解决方法
ios系统微信浏览器.safari浏览器中h5页面上拉下滑导致悬浮层脱离窗口的解决方法 参考文章: (1)ios系统微信浏览器.safari浏览器中h5页面上拉下滑导致悬浮层脱离窗口的解决方法 (2) ...
- H5页面卡顿加载慢原因分析
H5页面卡顿原因分析: 1.动画太多:渲染重绘占用GPU 2.页面操作导致重绘频繁 3.页面元素复杂:资源类标签太多(图像/视频/dom树太长) 4.内置webview性能太差 5.和3类似,iOS出 ...
- H5页面标题栏部分加载进度条0%-100%
网页进度条能够更好的反应当前网页的加载进度情况,loading进度条可用动画的形式从开始0%到100%完成网页加载这一过程. 首先我们要知道的是,目前没有任何浏览器可以直接获取正在加载对象的大小.所以 ...
- 安卓下设置系统字体大小影响H5页面布局
问题描述: 调整好的h5页面,放在安卓app内嵌页面后布局正常,后来用户调整系统里面字体大小,后内嵌H5布局乱掉 问题分析: 因为用户调整了系统字体的大小,修改了根节点和body节点的font-siz ...
- Jquery 实现H5页面上拉加载更多
在最新的H5开发项目中,需要开发上拉加载更多的功能,如何实现上拉加载更多,网上有很多插件可以实现,如:mescroll.mui.isScroll等等,最初我也是选择了使用插件,但在使用过程中发现了如果 ...
- java h5 上拉加载更多_移动端H5页面上拉加载更多功能实现(二)
之前已经写过一篇关于上拉加载更多的文章,那个主要是根据滚动实现分页向后台发起请求实现.这次实现方式为后台返回所有需要加载的数据,前端这边做视觉上的分页效果.实现原理也是根据滚动距离触发加载更多的条件. ...
- android 下拉刷新数据,如何剥离Android页面下拉刷新、加载下一页等逻辑?
最近碰到一个新的页面控制需求:下拉刷新如果失败,listview上面的数据需要保留,然后悲剧的发现之前写的NetFragment和ListNetFragment都不能覆盖这种逻辑,又要重写了.痛定思痛 ...
- 在H5页面中跳转到地图App,或者在本地App中加载的H5页面跳转到地图App,唤起App进行导航
在H5中使用地图导航 1.腾讯地图: 2.高德地图: 3.百度地图: 1.腾讯地图: 调用方式: http://apis.map.qq.com/uri/v1/marker?marker=coord:l ...
- ios系统在h5页面下拉上拉会带动整个webview 出现空白
产生原因: 在 iOS 中,手指按住屏幕上下拖动,会触发 touchmove 事件.这个事件触发的对象是整个 webview 容器, 容器自然会被拖动,剩下的部分会成空白. 在 W3C 文档中说 to ...
最新文章
- 给Sqlite数据库设置密码
- 个人计算机用户隐私保护全接触(2)
- UniDAC使用教程(二):数据更新
- XDP/eBPF — 架构设计
- 2018中国国际大数据大会专属报名通道(免费)开通啦!
- Oracle中关于并集/交集/差集的运算
- golang 锁的使用
- 算法不会,尚能饭否之排序——折半插入排序(Binary Insert Sort)
- base64与base64url编码
- 7.5日chinapub生日聚会
- Latex 的基本语法
- 什么是 0day 漏洞,1day 漏洞和 nday 漏洞?
- 《PaddlePaddle从入门到炼丹》十一——自定义图像数据集识别
- DyingGasp电路(掉电检测电路)设计
- secect语句报错expecting(,eof或;
- 天梯赛题目练习——高速公路超速处罚(附带测试点)
- CSFR(跨站请求伪造)攻击与防御
- 非计算机专业二级c语言,2017年计算机二级C语言基本知识
- 想拿高工资?Java面试资料集合,附赠课程+题库
- 【机器视觉】工业传统视觉和3D视觉算法
热门文章
- 电子传真虚拟化的优势
- 数字键盘输入法——崩出来的“猪”字的背后
- Excel空白行如何批量填充复制上一行的内容?
- 电大计算机专业软件工程试题,2021国家开放大学电大本科《软件工程》期末试题及答案(试卷号:1260)...
- 用户增长-高价值行为模型
- linux在没网的情况下安装libreoffice
- 超文本标记语言主要通过Html,11.HTML中文译为“超文本标记语言”,主要是通过HTML标记对网页中的( )等内容进行描述。...
- 如何对接淘宝开放平台API接口(超详细)
- postcss 插件_PostCSS深入研究:创建自己的插件
- 正弦定理c语言,高二数学正弦定理测试题