上拉或者下拉刷新的需求在移动端是非常常见的需求,大部分情况下,实现这个效果都使用网上现有的解决方案,例如有人使用swiper
这个插件, 也有人使用iScroll
这个滚动插件。本文的示例是利用iscroll实现的下拉刷新效果。
iScrool
是目前最成熟的自定义滚动解决方案之一,在移动端和PC有很好的兼容性。iScroll官方提供了5个不同的版本:
根据不同的需求,选择相应的版本,当前的示例中,我们选择的是iscroll-probe.js
版。
Gitbook地址:iScroll API 中文版
代码思路则是:利用监听滚动条的scroll
事件,判断下拉或者上拉的距离,做上触发距离标记,当scrollEnd
事件触发时,执行数据加载。让我们看核心部分代码:
<div id="MyScroller" class="main">
<div class="warpper">
<div id="PullDown" class="scroller-pullDown" style="display: none;">
<img style="width: 20px; height: 20px;" src="rolling.svg" />
<span id="pullDown-msg" class="pull-down-msg">下拉刷新</span>
</div>
<ul id="Content" class="dropdown-list">
</ul>
<div id="PullUp" class="scroller-pullUp" style="display: none;">
<img style="width: 20px; height: 20px;" src="rolling.svg" />
<span id="pullUp-msg" class="pull-up-msg">上拉刷新</span>
</div>
</div>
</div>
.scroller {
position: relative;
width: 100%;
height: 100%;
}
.scroller .warpper {
position: absolute;
width: 100%;
}
.scroller-pullDown, .scroller-pullUp {
width: 100%;
height: 30px;
padding: 10px 0;
text-align: center;
}
.dropdown-list {
padding: 0;
margin: 0;
}
.dropdown-list li {
width: 100%;
background: #ddd;
line-height: 45px;
text-align: center;
color: #FFF;
border-bottom: 1px solid #FFF;
}
var pullDown = document.querySelector("#PullDown"),
pullUp = document.querySelector("#PullUp"),
isPulled = false; // 拉动标记
var myScroll = new IScroll('#MyScroller', {
probeType: 3,
mouseWheel: true,
scrollbars: true,
preventDefault: false,
fadeScrollbars: true
});
myScroll.on('scroll', function() {
var height = this.y,
bottomHeight = this.maxScrollY - height;
// 控制下拉显示
if (height >= 60) {
pullDown.style.display = "block";
isPulled = true;
return;
}
else if (height < 60 && height >= 0) {
pullDown.style.display = "none";
return;
}
// 控制上拉显示
if (bottomHeight >= 60) {
pullUp.style.display = "block";
isPulled = true;
return;
}
else if (bottomHeight < 60 && bottomHeight >= 0) {
pullUp.style.display = "none";
return;
}
})
myScroll.on('scrollEnd', function() { // 滚动结束
if (isPulled) { // 如果达到触发条件,则执行加载
isPulled = false;
appendContent(getContents());
myScroll.refresh();
}
});
http://wewoor.github.io/js-lab/iscroll-pulldown-load/index.html
原文地址:
文章浏览阅读390次。最近在工作中,频繁用到一些结构体的申请,内存会频繁的进行释放和申请,于是想尝试一下sync.pool的优化效果。sync.pool,需要初始化 Pool,唯一需要的就是设置好 New 函数。当调用 Get 方法时,如果池子里缓存了对象,就直接返回缓存的对象。如果没有存货,则调用 New 函数创建一个新的对象。另外,我们发现 Get 方法取出来的对象和上次 Put 进去的对象实际上是同一个,Pool 没有做任何“清空”的处理。但我们不应当对此有任何假设,因为在实际的并发使用场景中,无法保证这种顺序,最_sync.pool优化
文章浏览阅读2.7k次,点赞3次,收藏4次。我们很多的案例实际上就是用来检测我们的单片机上的零件等是否能正常使用,我们已经测试了很多的二极管,数码管等,对于我们的发生装置还没有一定的了解,故我们现在学习一下蜂鸣器和可变调的蜂鸣器蜂鸣器实验现象蜂鸣器初始状态是没有发声;按下按键1,则蜂鸣器开始发声再次按下按键1,蜂鸣器停止发声工作原理电路原理图:无源蜂鸣器只需改变Beep端口的电平,产生一个周期性的方波即可使蜂鸣器发生声音..._51单片机默认关闭蜂鸣器
文章浏览阅读2.3k次。QT中已经集成了OpenGL的功能,下面利用OpenGL来实现第一个三角形的绘制。先看效果:#pragma once#include <QOpenGLWidget>#include <QOpenGLFunctions>#include <QOpenGLShaderProgram>class BBBOpenGLWgt : public QOpen..._qtgflrb
文章浏览阅读1.8k次,点赞2次,收藏25次。launch文件的使用一、launch文件启动小海龟demo二、launch文件的各个标签的属性1.launch标签属性2.node标签属性3.include标签属性4.remap标签属性5.param标签属性6.rosparam标签属性6.1 rosparam参数加载6.2 rosparam参数导出6.3 rosparam参数删除7.group标签属性8.arg标签属性8.1arg使用参数默认值8.2arg使用动态传参一、launch文件启动小海龟demolaunch文件同时启动小海龟节点和键盘控制节_launch如何读取rosparam
文章浏览阅读271次。本文介绍了UVM常用类及其一般用法,并给出了代码案例;讲述了UVM树形结构和一些常用方法_uvm_component_utils
文章浏览阅读103次。1.安装Docker首先需要安装docker 已經安裝过的兄台,可以忽略这一步,执行第二步windows 安装linux下载安装curl -sSL https://get.docker.com/ | sh设置开机自启sudo systemctl enable docker.servicesudo service docker start|restart|stop2. 安装git clone htt..._docker-compose php7.3
文章浏览阅读396次。问题编号:50提问内容: 我的pix os是7.22pix525# sh verCiscoPIXSecurityAppliance Software Version 7.2(2)但是没有DISABLE ESMTP这条命令pix525(config)# disable ?exec mode commands/options:回答内容:policy-map globa..._思科 asa inspect sip
文章浏览阅读439次。一、分布式知识点:分布式基础、缓存机制、消息机制、搜索机制、分布式ID、分布式锁、分布式SESSION、分布式事务、分布式分页、分布式部署、二、分布式基础知识 软件架构设计的六大原则:https://blog.csdn.net/u012562943/article/details/76110761 软件架构需要考虑的基本原则:https://blo..._分布式设计
文章浏览阅读2.9k次。J1939多帧_j1939多帧接收拒绝接收
文章浏览阅读1.6k次。比如, 网络不稳定,服务器出错,跨域问题、或者资源本身有问题,导致出现了资源加载失败。就会造成后面需要使用的地方出现。// 便签的名称必须是 'SCRIPT' 与 event 错误的类型不能是 ErrorEvent。标签中资源加载出错,从而执行一些自己想要的操作。'script 加载错误'// 拿到触发错误的标签。_指向其它服务器页面的 加载失败。
文章浏览阅读529次。OpenCV 图像保存格式之一为 cv::Mat, 常用 imread 进行图像读取,用 imwrite 进行图像保存,用 imshow 进行图像显示。_opencv对传入的对象图片进行修改
文章浏览阅读520次。"font-size:18px;">类的方法 1.在加号方法中不能使用实例变量,实例变量是依托于对象存在的只有有了对象,实例变量才会有空间 2.self 谁调用该方法,self就代表谁 当方法是一个减号方法时, 调用该方法的对象是谁,self就代表当前对象 当方法是一个加号方法时, 调用该方法的类是谁,self就代表当前类 3._oc setobject