利用伪类选择器与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 ...
随机推荐
- JavaScript也是黑客技术?
JavaScript 超级 BUG!多款 x86/ARM 处理器瞬间遭破解 https://www.oschina.net/news/82108/javascript-bug-cause-cpu-as ...
- Python实例 复制文件
import shutil import os import os.path src = " d:\\download\\test\\myfile1.txt " dst = ...
- Leetcode661.Image Smoother图片平滑器
包含整数的二维矩阵 M 表示一个图片的灰度.你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多 ...
- vue学习之组件(component)(一)
组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有些情况下, ...
- OpenLayers图层
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- IO流-文件操作
一.字节流读/写 文件 1.字节流 方式读取文件
- DirectX11笔记(十一)--Direct3D渲染7--RENDER STATES
原文:DirectX11笔记(十一)--Direct3D渲染7--RENDER STATES 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010 ...
- 大数据技术之Hadoop入门
第1章 大数据概论 1.1 大数据概念 大数据概念如图2-1 所示. 图2-1 大数据概念 1.2 大数据特点(4V) 大数据特点如图2-2,2-3,2-4,2-5所示 图2-2 大数据特点之大量 ...
- Notepad++搜索中的正则应用
假设要查找文件中所有tppabs="*****" 类型的代码 tppabs="http://www.******.com/templates/Alen/Css/Main. ...
- MaxCompute助力小影短视频走向全球化
数字时代,中国已经成为世界互联网的中心,小影(海外版称作为VivaVideo,后简称VivaVideo)作为国内首批短视频出海企业,借助统一的云计算平台快速实现全球业务的线上部署,已经让每一行代码都获 ...