javascript - HTML5 移动端的上下左右滑动问题
高洛峰
高洛峰 2017-04-10 14:58:58
0
3
642

在移动端页面上,如果要实现【顶部轮播,手指触摸左右滑动】
我的方案是,通过监听滑动,阻止默认事件来完成

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

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


问题已经解决了,思路是

var xx,yy,XX,YY,swipeX,swipeY ;
 p.addEventListener('touchstart',function(event){
     event.stopPropagation();//阻止冒泡
     event.preventDefault();//阻止浏览器默认事件
     xx = event.targetTouches[0].screenX ;
     yy = event.targetTouches[0].screenY ;
     swipeX = true;
     swipeY = true ;
 })
 p.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 ;
          //上下滑动,使用浏览器默认的上下滑动
      }
  })
  p.addEventListener('touchend',function(event){
     event.stopPropagation();//阻止冒泡
     event.preventDefault();//阻止浏览器默认事件
 })
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
左手右手慢动作

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

洪涛

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

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

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

左手右手慢动作

亲你这个会和a标签冲突怎么解决

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!