利用伪类选择器与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 ...
随机推荐
- Django中的orm的惰性机制
惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象)[https://www.cnblogs.com/chaojiying ...
- 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes【取回文数/数论/字符串】
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...
- Leetcode36.Valid Sudoku有效的数独
判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...
- iview 中table列 一列显示多个数据(后台返回数组显示在列内)
一.首先出现的是比较复杂的一种情况(多个key) 1.首先页面显示效果如下 2.后台返回数据格式如下: 3.在iview中table的columns中的render函数: 4.具体代码 render: ...
- php语言的核心知识点
PHP:脚本语言,网站建设,服务器端运行PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的.面向对象的.解释型的.健壮的.安全的.性能非常之高的.独立于架构的.可移植的.动态的脚本语言 ...
- Java开发中的Memcache原理及实现
Memcached 客户端程序 Memcached的java客户端已经存在三种了: ? 官方提供的基于传统阻塞io由Greg Whalin维护的客户端 ? Dustin Sallings实现的基于 ...
- js的动态tab导航
html部分 <div class="container"> <h3 class="page-header">tab切换</h3& ...
- c中函数指针和回调函数
函数指针: 指向函数的指针.(定义的函数会分配一块内存,同变量一样存在首地址)示例如下: int Func(int x); /*声明一个函数*/ int (*p) (int x); /*定义一个函数指 ...
- python中几种单例模式的实现
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...
- Percona XtraBackup 完全及增量备份与恢复的方法
安装及备份.恢复实现 安装:其最新版的软件可从 http://www.percona.com/software/percona-xtrabackup/ 获得.本文基于CentOS6.x的系统,因此,直 ...