利用伪类选择器与better-scroll的on事件所完成的上拉加载
之前给大家分享过一篇上拉加载 利用了better-scroll的pullUpDown 和DOM元素的删除添加 感觉那样不太好
今天给大家分享一个不同的上拉加载思想 代码如下
class List {
constructor(opj) {
this.page = opj.page;//第几页数据
this.list = opj.list;//多少条数据
this.el = opj.el; //添加better-scroll的元素
this.listDom = document.querySelector(".list"); //第一个子元素
//在函数刚进来的时候绑定bs 只把绑定一次
this.bs = new BScroll(this.el, {
probeType: 2
})
this.init()
}
init() {
this.getData();
this.scroll();
}
getData() {
//默认请求数据
axios.get(`/api/data?page=${this.page}&list=${this.list}`).then(res => {
//向后台发送请求接着渲染数据 然后刷新重置页面
this.render(res.data);
this.bs.refresh()
})
}
render(data) {
this.listDom.innerHTML += data.map(item => `<div class="item">
<div class="left">
<img src="${item.img}" alt=""></div>
<div class="right">
<p>我是第${item.id}条数据</p>
<p>${item.title}</p>
</div>
</div>`).join("")
}
scroll() {
//滚动事件
let that = this;
this.bs.on("scroll", function () {
//当滚动条的滚动高度大于某一个值的时候改变其up的内容
//console.log(this.y,this.maxScrollY);
if (that.page > 7) {
that.listDom.setAttribute("up", "没有数据了亲");
return;
}
if ((this.maxScrollY - 70) > this.y) {
that.listDom.setAttribute("up", "释放加载更多");
} else {
that.listDom.setAttribute("up", "上拉加载更多....");
}
});
//在滚动结束以后要在吧其内容变成上拉加载更多
this.bs.on("scrollEnd", () => {
this.listDom.setAttribute("up", "上拉加载更多....");
});
//在松开手指的瞬间判断这个状态是什么从而决定是否要发送ajax请求向后发送数据
this.bs.on("touchEnd", () => {
let content = this.listDom.getAttribute("up");
if (content == "释放加载更多") {
this.page++;
//顺带判断下当数据库的总数据超过数据库的总数据要显示没有数据了
if (this.page > 7) {
this.listDom.setAttribute("up", "没有数据了亲");
return;
}
this.getData();
//最重要的一点是渲染完页面重新计算文本高度
//因为这个请求是异步的 所以方法在上了 refresh
}
})
}
}
上述为js部分代码 总共需要on的几个事件 然后贴一下HTML和css的伪类选择器相关代码
HTML
<main>
<div class="list" up="上拉加载更多....">
<!-- <div class="item">
<div class="left">
<img src="" alt="">
</div>
<div class="right"></div>
</div> -->
</div>
</main>
CSS
.list{
width: 100%;
position: relative;
&::after{
content: attr(up); //就是这里将伪类的字展示出来
text-align: center;
position: absolute;
left:;
bottom: -0.6rem;
width: 100%;
height: 0.6rem;
font-size: 0.32rem;
background: red;
line-height: 0.6rem;
color: #fff;
}
}
不足之处欢迎指出喽~~~
利用伪类选择器与better-scroll的on事件所完成的上拉加载的更多相关文章
- CSS伪类选择器active模拟JavaScript点击事件
一.说明 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式. IE7及更早浏览器只支持a元素的:active,从IE8开始支持其它元素的:active. 另:如果需要给超链接定义:访问前 ...
- 移动端web页面列表类上拉加载,查看详情,iframe嵌套第三方页面遇到的问题以及解决办法
1.移动端上拉加载 网上有很多成熟的插件,比如iscroll.在这里介绍一下用jquery和js写的上拉加载方法.使用原生的去写上拉加载更多需要三个高度去做对比,以新闻类列表举例,首先需要整个dom的 ...
- Android利用V4包中的SwipeRefreshLayout实现上拉加载
基本原理 上拉加载或者说滚动到底部时自动加载,都是通过判断是否滚动到了ListView或者其他View的底部,然后触发相应的操作,这里我们以 ListView来说明.因此我们需要在监听ListView ...
- 利用iscroll实现上拉加载下拉刷新
1.首先引用isScroll插件 说明:页面加载时初始化isScroll,然后调用pullDownAction()和pullUpAction(),每次切换tab时,只需要对pullDownAction ...
- CSS伪类选择器实现三角形
使用css实现常用的三角效果 项目中三角: .breadcrumb{ height: 40px; line-height: 40px; padding: 0 20px; border-top: 1px ...
- css选择器(常规选择器,伪类选择器,伪元素选择器,根元素选择器)
前言 CSS的一个核心特性是能向文档中的一组元素类型应用某些规则,本文将详细介绍CSS选择器 选择器 [通配选择器] 星号*代表通配选择器,可以与任何元素匹配 *{color: red;} [元素选择 ...
- mui scroll和上拉加载/下拉刷新
mui中 scroll和上拉加载/下拉刷新同时存在会出现两个滚动条 把/* */ /* //mui页面鼠标拖动代码: mui('.mui-scroll-wrapper').scroll({ dec ...
- CSS3 选择器——伪类选择器
前面花了两节内容分别在<CSS3选择器——基本选择器>和<CSS3选择器——属性选择器>介绍了CSS3选择器中的基本选择器和属性选择器使用方法,今天要和大家一起学习CSS3选择 ...
- CSS3 nth 伪类选择器
考察下面的 HTML 代码片段: <div> <section>section 1</section> <section>section 2</s ...
随机推荐
- python基础--数据类型的常用方法2
列表及内置方法: count():查询元素的个数 clear():清空当前对象 reverse():对当前对象进行反转 sort():对当前对象中的元素进行排序 总结: 能存多个值 有序的 可变的 队 ...
- mysql错误日志目录
在windows下,一般是mysql安装目录下的data目录下 ,扩展名是.err的文件.
- Codeforces 3D
题目链接 D. Least Cost Bracket Sequence time limit per test 1 second memory limit per test 64 megabytes ...
- Linux之脚本安装包
1.脚本安装包 脚本安装包不是独立的软软件包类型,常见的安装时源码包 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装 类似于windows下的软件安装 一般是硬件驱 ...
- 各种高度的区别及height、clientHeight、scrollHeight、offsetHeight的区分
1.height.clientHeight.scrollHeight.offsetHeight 我们来实现test中的onclick事件 function justAtest() { ...
- 几种常见的flex布局
1,水平等距排列.俩端对齐.垂直方向居顶对齐 html: <div class="container flex"> <div class="div1&q ...
- ELK之java虚拟机安装1
建议:直接按照默认路径,下面有一个路径我有点小改动 java最新版本1.12 从官网上下载oracle官网上的jdk 1.双击这个jdk.exe 2.点击"是" 3.点击下图的&q ...
- jmeter的运行原理和测试计划要素
jmeter运行原理 1.jmeter运行在JVM虚拟机上,jmeter是以线程的方式运行的. 2.jmeter通过线程组来驱动多个线程,运行测试脚本对被测试服务器发起负载,每一个负载机上够可以运行多 ...
- “获取access_token”接口新增IP白名单保护
- mysql 使用concat模糊查询
如果这三个字段中有值为NULL,则返回的也是NULL,那么这一条记录可能就会被错过,使用IFNULL进行判断 SELECT * FROM `magazine` WHERE CONCAT(IFNULL( ...