原生js手机端触摸下拉刷新
废话不多说,直接上代码,这里感谢我的好朋友,豆姐 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;" />
<title>下拉刷新</title>
</head>
<style>
div{
width:100%;
overflow:hidden;
}
div ul{
margin:0;
position:absolute;
top:-40px;
left:0;
width:100%;
padding:0;
}
div ul li{
list-style-type:none;
text-align:center;
border-bottom:1px solid #999;
line-height:40px;
margin:0;
}
.div{
height:1000px;
width:100%;
background:#F00;
margin-top:500px;
}
</style>
<body>
<!--滑动绑定元素 cont需要定位-->
<div class="all">
<ul class="cont">
<li><img src="../refresh/slide-up-down/slide-up-down/2787117_161300358107_1.gif" height="20"></li>
<li><span id="test">下拉刷新</span></li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
<!--滑动绑定元素结束-->
<div class="div"></div><!--页面元素-->
<script>
var _sroll = document.querySelector('.all');
var outscroll = document.querySelector('.cont');
var _test = document.querySelector('#test');
var _star = 0;
//获取手指最初的位置,添加一个触摸开始的监听事件
_sroll.addEventListener('touchstart',function(event){
//获取手指数组中的第一个(可以用targetTouches)
var _touch = event.touches[0];
//获取滑动时手指的y坐标+
_star = _touch.pageY;
}, false);
//获取滑动的距离,添加一个触摸滑动的监听事件
_sroll.addEventListener('touchmove',function(event){
//获取手指数组中的第一个(可以用targetTouches)
var _touch = event.touches[0];
outscroll.style.top = outscroll.offsetTop + _touch.pageY-_star + 'px';
//获取滑动后手指的y坐标
_star = _touch.pageY;
_test.innerHTML = '放开刷新';
}, false);
//添加屏幕触摸接触结束的事件
_sroll.addEventListener('touchend',function(event){
//初始化手指触摸的y坐标
_star = 0;
//获取下拉元素的top值
var top = outscroll.offsetTop;
//如果大于40就刷新
if(top>0){
//循环慢慢的收缩
var time = setInterval(function(){
outscroll.style.top = outscroll.offsetTop -2+'px';
//如果top等于原始值,停止收缩
if(outscroll.offsetTop<=-40){
clearInterval(time);
//刷新页面
location.reload();
}
},1);
}
}, false);
</script>
</body>
</html>
原生js手机端触摸下拉刷新的更多相关文章
- 原生js实现简单的下拉刷新功能
前言: 我们在浏览移动端web页面的时候,经常会用到下拉刷新. 现在我们用原生的js实现这个非常简单的下拉刷新功能. (温馨提示:本文比较基础,功能也很简单.写的不好的地方,希望大神提点一二.) 一. ...
- JS+CSS实现的下拉刷新/上拉加载插件
闲来无事,写了一个当下比较常见的下拉刷新/上拉加载的jquery插件,代码记录在这里,有兴趣将代码写成插件与npm包可以留言. 体验地址:http://owenliang.github.io/pull ...
- js:基于原生js的上啦下啦刷新功能
链接:https://www.jianshu.com/p/a8392115e6f0演示地址:http://wonghan.cn/iscroll-demo/html:<body> <d ...
- 基于Vue手写一个下拉刷新
当然不乏有很多下拉刷新的插件可以直接使用,但是自定义程度不强,大部分都只能改改文字,很难满足设计师的创意,譬如淘宝和京东首页那种效果,就需要自己花心思倒腾了,最近刚好有这种需求,做完了稍微总结一下,具 ...
- 使用MUI框架,模拟手机端的下拉刷新,上拉加载操作。
套用mui官方文档的一句话:“开发者只需关心业务逻辑,实现加载更多数据即可”.真的是不错的框架. 想更多的了解这个框架:http://dev.dcloud.net.cn/mui/ 那么如何实现下拉刷新 ...
- 原生js实现一个自定义下拉单选选择框
浏览器自带的原生下拉框不太美观,而且各个浏览器表现也不一致,UI一般给的下拉框也是和原生的下拉框差别比较大的,这就需要自己写一个基本功能的下拉菜单/下拉选择框了.最近,把项目中用到的下拉框组件重新封装 ...
- 原生js实现简单的下拉加载
#获取当前滚动条的高度document.documentElement.scrollTop #获取当前窗口的高度 document.documentElement.clientHeight #获取当前 ...
- js上拉加载、下拉刷新的插件
之前在网上找那种下拉刷新,上拉加载的插件,有一款IScroll,但是用起来太麻烦,于是就自己写了款,但依赖于jquery.js,bug肯定有,希望评论提出. js: /* 简洁的下拉刷新,上拉加载插件 ...
- listview下拉刷新和上拉加载更多的多种实现方案
listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局 android系统为listview提供了addfootview ...
随机推荐
- D2.Docker: 安装部署相关问题
[mysql] docker 安装完mysql 后客户端无法访问
- [转帖]Linux下逻辑地址、线性地址、物理地址详细总结
Linux下逻辑地址.线性地址.物理地址详细总结 https://www.cnblogs.com/alantu2018/p/9002441.html 总结的挺好的 现在应该是段页式管理 使用MMU和T ...
- 编程语言、Python介绍及其解释器安装、运行Python解释器的两种方式、变量、内存管理
一.编程语言介绍 1.1 机器语言:直接用计算机能理解的二进制指令来编写程序,直接控制硬件. 1.2 汇编语言:在机器语言的基础上,用英文标签取代二进制指令来编写程序,本质上也是直接控制硬件. 以上2 ...
- python学习-54 正则表达式2
re模块 之分组 >>> import re >>> re.findall("ab|c","sdfab|csdf") ['a ...
- pod宿主机挂载pv存储过程
1处的控制循环Control Loop应该是:VolumeManagerReconciler ----------------------------------------------------- ...
- vue elementui如何修改el-table头部样式
找到el-table加入红色代码 <el-table :row-style="tableRowStyle" :header-cell-style="tableHea ...
- PB自动换行
1.在DataWindow Painter中打开DataWindow; 2.在需设定自动折行的列上单击, 查看右侧的属性窗口: 3.点击Position标签, 选中Autosize Height 多选 ...
- PB笔记之数据窗口可编辑的条件
1.列的tab order为0,列不能获得焦点2.dw_control.object.datawindow.readonly="yes"3.DW.Object.<Column ...
- Hystrix 用法及注解用法
一.hystrix参数使用方法 通过注解@HystrixCommand的commandProperties去配置,如下就是hystrix命令超时时间命令执行超时时间,为1000ms和执行是不启用超时 ...
- 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)
原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...