博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML5 移动端的上下左右滑动问题
阅读量:6904 次
发布时间:2019-06-27

本文共 1098 字,大约阅读时间需要 3 分钟。

在移动端页面上,如果要实现【顶部轮播,手指触摸左右滑动】

我的方案是,通过监听滑动,阻止默认事件来完成

div.addEventListener('touchmove',function(event){    event.preventDefault();//阻止浏览器的默认事件})

  

这样,左右滑动可以完成了,但是触摸这个div的时候,页面不能上下滑动了,怎么办?

当touchmove的时候,实时改变window的scrolltop值?

这样会有原生的滑动效果吗?

大家有什么解决方案

问题已经解决了,思路是

var xx,yy,XX,YY,swipeX,swipeY ; div.addEventListener('touchstart',function(event){     xx = event.targetTouches[0].screenX ;     yy = event.targetTouches[0].screenY ;     swipeX = true;     swipeY = true ; }) div.addEventListener('touchmove',function(event){      XX = event.targetTouches[0].screenX ;      YY = event.targetTouches[0].screenY ;      if(swipeX && Math.abs(XX-xx)-Math.abs(YY-yy)>0)  //左右滑动      {          event.stopPropagation();//组织冒泡          event.preventDefault();//阻止浏览器默认事件          swipeY = false ;          //左右滑动      }      else if(swipeY && Math.abs(XX-xx)-Math.abs(YY-yy)<0){  //上下滑动          swipeX = false ;          //上下滑动,使用浏览器默认的上下滑动      }  })

  

可以判断下move大概方向,然后水平的时候阻止默认行为,其他时候不阻止就OK了

 

其实 单纯判断move是水平也是不行的,如果用户是斜上地滑怎么判断?

我的想法是,在这个轮播上实现这样的一个覆盖层

当用户从A触发了touchstart 结束或者move到b,或者b start,在c上结束,判定为右滑。左滑则相反。

转载地址:http://kmldl.baihongyu.com/

你可能感兴趣的文章
drop.delete.trauncat的区别
查看>>
状态栏 隐藏问题
查看>>
IIS
查看>>
ul li css 做横向菜单
查看>>
[转载]在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(二)----使用方法...
查看>>
sencha touch 2--audio
查看>>
详细介绍Linux /etc/group文件
查看>>
解决w3wp.exe内存占用过高的方法
查看>>
basic4android 开发教程翻译(五)Android进程及activitys 生存周期
查看>>
设计模式--工厂方法模式
查看>>
教你如何迅速秒杀掉:99%的海量数据处理面试题
查看>>
使用FFmpeg捕获一帧摄像头图像
查看>>
请问在数据库中怎样用模糊查询查找含有通配符的项,比如 like ' ' 我要查找含有“%”的项,怎么查?...
查看>>
使用webdriver和beautifulsoup下载国家地理图片
查看>>
dsp 链接命令文件的写法
查看>>
C#在64位操作系统上连接Oracle的问题和解决方案
查看>>
使用 IntraWeb (11) - 基本控件之 TIWButton
查看>>
Python数据结构——散列表
查看>>
javaScript之function定义
查看>>
PowerShell常用的.Net 、COM对象(New-Object、Assembly)、加载程序集
查看>>