利用伪类选择器与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 ...
随机推荐
- postman发送get和post请求
一.postman发送get请求 在地址栏里输入请求url(用到拼接方式):http://127.0.0.1:8081/getuser?userid=1 选择“GET”方式, 点击“send”得到 ...
- 再问你Java内存模型的时候别再给我讲堆栈方法区
在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情.要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型 ...
- Vue.之.创建项目
Vue.之.创建项目 第一次使用vue的时候,在已完成node的情况下,还需要在进行安装vue. 指令:cnpm install vue-cli -g //全局安装 vue-cli 检查vu ...
- 2019.8.5 NOIP模拟测试13 反思总结【已更新完毕】
还没改完题,先留个坑. 放一下AC了的代码,其他东西之后说… 改完了 快下课了先扔代码 跑了跑了 思路慢慢写 来补完了[x 刚刚才发现自己打错了标题 这次考试挺爆炸的XD除了T3老老实实打暴力拿了52 ...
- Oracle树查询
1.Oracle函数 sys_connect_by_path 语法: select sys_connect_by_path(column_name,'connect_symbo链接标志l') fro ...
- cron服务
相对与at,cron的优点就是能够周期性的执行某个命令,at却只能执行一次,cron的后台进程名字是crond ,cron也是system V的服务,所以我们可以service crond start ...
- 【扩展推荐】Laravel-ide-helper 高效的 IDE 智能提示插件 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPH
说明# barryvdh/laravel-ide-helper 扩展包能让你的 IDE ( PHPStorm, Sublime ) 实现自动完成.代码智能提示和代码跟踪等功能,大大提高你的开发效率. ...
- Vue Router 相关
1. 路由传参: 编程式的导航 router.push this.$router.push("home"); this.$router.push({ name: 'news', p ...
- 【笔记】LR配置ODBC连接数据库进行参数化(mysql )未完待续
很多时候我们需要大量的参数数据,但是光光靠手填写是非常麻烦的,既然被测对象的数据都在数据库,那么我们直接读取数据库回来就轻松简便很多. data wizard 提供了一个从ODBC的连接获得数据转化 ...
- 【python小随笔】pycharm的永久破解
PS:这里有人会遇到第一次输入补丁的破解命令后,重启后启动不了软件,这个时候需要卸载(unstall把配置都得删除了),然后重新下载软件,再用这个步骤就OK了~~版本一定要低于最新版本两个以上,最好用 ...