实现手机端上下左右滑屏的jq原生代码和使用库·两种办法
先来一个原生的。我使用的是jq。
需要注意的地方就是被触发的元素最好不要是body,这个代码也可以修改,如果obj传进来的是body那么,$(this)必须是你的监听元素,不然会冒泡泡,整个项目就……。
原理很简单哦,绑定具体事件分别是:
1.事件一:touchstart:触摸开始;【touch:触摸;start:开始】
originalEvent【original:最初的;Event:事件】
changedTouches【改变触摸】
我们理解为,一开始触摸时候的坐标,我们获取到了。
2.事件二:touchmove【触摸移动,这时候我们手指在屏幕上开始滑动了】
然而要获取它的移动中的坐标,我们需要写点兼容代码:touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
然后就是二元运算了,当我们移动的坐标减去开始触摸的坐标,如果满足我们的条件就执行我们要的效果。
3.事件三:touchend【触摸结束】
当手指离开屏幕,该干嘛干嘛。
function addEvetnDown(obj) {
$(obj).on('touchstart', function(e) {
var touch = e.originalEvent,
startX = touch.changedTouches[0].pageX;
startY = touch.changedTouches[0].pageY;
$(this).on('touchmove', function(e) {
touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
if (touch.pageX - startX > 10) {
console.log("右划");
/*你的操作代码*/
$(this).off('touchmove');
} else if (touch.pageX - startX < -10) {
console.log("左划");
/*你的操作代码*/
$(this).off('touchmove');
};
if (touch.pageY - startY > 100) {
console.log("下划");
/*你的操作代码*/
//$(this).off('touchmove');
} else if (touch.pageY - startY <= -1) {
console.log("上划");
/*你的操作代码*/
//$(this).off('touchmove');
};
e.preventDefault();
e.stopPropagation();
});
return false;
}).on('touchend', function() {
$(this).off('touchmove');
});
}
下面这个呢,就没什么好说的了,看了网上有的朋友说在ios下有点兼容性什么的,也不知道是真的假的,反正有问题就修改呗。
首先引入jq和jq插件
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/jquery.touchSwipe.min.js"></script>
然后css你的样式啊,还有你的界面啊什么的,下面是js部分
$(document).ready(
function() {
var nowpage = 0;
//给最大的盒子增加事件监听
$(".container").swipe(
{
swipe:function(event, direction, distance, duration, fingerCount) {
if(direction == "up"){
nowpage = nowpage + 1;
}else if(direction == "down"){
nowpage = nowpage - 1;
} if(nowpage > 4){
nowpage = 4;
} if(nowpage < 0){
nowpage = 0;
} $(".container").animate({"top":nowpage * -100 + "%"},400); $(".page").eq(nowpage).addClass("cur").siblings().removeClass("cur");
}
}
);
}
);
看了官方的文档说明,说是可以兼容ie8的,也不知道是真的假的。
还有原生js的写法,我认为有简单省事的办法就尽可能不给自己找麻烦。这里给个链接,就不写el。
祝大家新年快乐
实现手机端上下左右滑屏的jq原生代码和使用库·两种办法的更多相关文章
- H5-移动端实现滑屏翻页-原生js/jquery
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android中实现全屏、无标题栏的两种办法
在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件AndroidManife ...
- 横竖屏事件响应(viewWillLayoutSubviews和通知)两种方式
转载:http://blog.csdn.net/nogodoss/article/details/17246489 最近搞横竖屏,获得一些心得,特记录下来. 做横竖屏最重要的是确定横竖屏响应的接口.目 ...
- Android中实现全屏、无标题栏的两种办法(另附Android系统自带样式的解释)
在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件AndroidManife ...
- vue手机端横屏竖屏切换
1.建一个空白的vue文件,添加上如下代码 data() { this.$router.go(-1) return {} } 2.在需要横屏竖屏切换的页面中加入如下代码: beforeMount( ...
- 手机端html5触屏事件(touch事件)
touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时候触发 touchend:触摸结束的时候触发 而每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点( ...
- 手机端Swiper 触屏滑动
在线实例 默认 响应式 垂直 空间间隔 滚动 自动滚动 中心化 中心化自动 免费模式 多个滚动 水平滚动 grab-cursor 使用方法 <div class="swiper-con ...
- (转)手机端html5触屏事件(touch事件)
本文转载自:http://blog.sina.com.cn/s/blog_51048da70101f0ex.html touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时 ...
- 仿今日头条app手机端顶部触屏滑动导航
swiper.js <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
随机推荐
- js 时间戳 转化
new Date((1524142795*1000)).toJSON().slice(11,16)
- linux 隐藏权限
原文 ------通过chattr设置档案的隐藏权限------ [root@sdc ~]#chattr --helpUsage: chattr [-RV] [-+=AacDdijsSu] [-v v ...
- mac activemq
安装 brew install maven 运行 To have launchd start activemq now and restart at login: brew services star ...
- Bootstrap 文件上传插件 FileInput的使用问题
: 在使用bootstrap的文件上传插件fileinput http://plugins.krajee.com/file-input的预览功能时,删除预览图片在 bootstrap 模态框中没有用, ...
- 最短路+找规律 Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest L. Right Build
题目链接:http://codeforces.com/gym/101149/problem/L 题目大意:有n个点(其实是n+1个点,因为编号是0~n),m条有向边.起点是0,到a和b两个节点,所经过 ...
- Linux type命令的用法
一般情况下,type命令被用于判断另外一个命令是否是内置命令,但是它实际上有更多的用法. 1.判断一个名字当前是否是alias.keyword.function.builtin.file或者什么都不是 ...
- python初步学习-生成式、生成器、迭代器、装饰器
生成式 列表生成式 字典生成式 集合生成式 嵌套列表生成式 列表生成式 列表生成式是python受欢迎的语法之一,通过一句简洁的语法就可以对一组元素进行过滤,还可以对得到的元素进行转换处理.语法格式为 ...
- LintCode之硬币排成线
输入的n可以分为两种情况: 1. 如果n是3的倍数的话,不论A怎么拿B都可以拿(3-A拿的个数)来使其保持是3的倍数,他就一定能拿到最后一块,所以n是3的倍数的话B必胜 2. 如果n不是3的倍数的话, ...
- Win7下SQLPlus登录时报错"SP2-1503:无法初始化Oracle调用界面"
Oracle安装完毕,使用SQLPlus登录的时候报错"SP2-1503:无法初始化Oracle调用界面",然后一闪界面关闭,报错界面如下: 这个是因为在Win7需要管理员权限,右 ...
- Vue SPA 首屏加载优化实践
写在前面 本文记录笔者在Vue SPA项目首屏加载优化过程中遇到的一些坑及优化方案! 我们以 vue-cli 工具为例,使用 vue-router 搭建SPA应用,UI框架选用 element-ui ...