最近,做了一个项目,需要在手机端用H5写一个程序模仿苹果手机原生的左右菜单,如下图:

简单实现了功能后,发现手机端运行时会遇到一个问题,当我手指进行左右滑动菜单时,除非手指水平滑动,否则会造成屏幕上下滑动。仔细研究后,发现是由于手指不能保证水平滑动,因此在滑动时,会有一定的误差,导致屏幕认为手指进行了上下滑动的操作。因此解决办法如下:

1)在touchstart处,记录targetTouches.clientX,targetTouches.clientY,也就是手指开始时的坐标(x1,y1)

2)在touchmove处,同样记录targetTouches.clientX,targetTouches.clientY,也就是手指移动时的坐标(x2,y2)

3)通过start和move记录的坐标,计算手指移动的角度,可以通过计算cos,sin值来判断角度大小。

4)通过角度大小来控制父类的overflow-y的属性是否hidden。

这里举例说明下:

假设起始位置的坐标为(2,3),移动后的坐标为(1,1),如下图:

此时,通过简单计算可得出,x = 1,y = 2,z = √5

sin a = y/z = 2/ √5,

假设你定义手指滑动角度必须大于等于30°就判定为垂直上下滑动,小于30°则判断为非垂直上下滑动,

那么条件就是(sin 30° = 1/2)

if (sin a >= 1/2){

可以上下滑动

}else{

禁止上下滑动

}

另外,还有一点需要注意:由于手机端手指滑动的角度是从0°~360°,而sin曲线在0°~180°为正值,180°~360°为负值,因此在计算的时候,需要为x,y取绝对值,即x = |x1 - x2| ,y = |y1 - y2|

最后附上自己简单写的一个左右拉动代码,欢迎查看:

https://github.com/chaoyidaozhan/swipeLeft

页面左右滑时,如何防止页面上下滑动相关推荐

  1. 使用jQuery的blockUI来实现页面回传数据时的等待页面

    每当点击提交按钮式,我们总是希望让用户看到的是比较友好的界面,很多网站都是使用jQuery的blockUI插件来实现这个功能,先看看界面吧: 下面我就一步一步告诉大家如何来实现这个功能,以后你就可以在 ...

  2. 【微信小程序】在页面跳转时如何进行页面导航

    1. 什么是页面导航 页面导航指的是页面之间的相互跳转.例如,浏览器中实现页面导航的方式有如下两种: ① a链接 ② location.href 2. 小程序中实现页面导航的两种方式 ① 声明式导航 ...

  3. jsp页面div上下滑动_H5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 实现原理 假 ...

  4. html5页面的手势,HTML5单页面手势滑屏切换如何实现

    这次给大家带来HTML5单页面手势滑屏切换如何实现,怎么实现HTML5单页面手势滑屏切换?HTML5单页面手势滑屏切换的注意事项有哪些,下面就是实战案例,一起来看一下. H5单页面手势滑屏切换是采用H ...

  5. iphonex 在pop页面显示tabBar时图片上移

    我在做iPhone X适配时发现,当二级页面没有tabBar而一级页面有tabBar时,右滑返回时会出现tabBar文字图片上移的情况,找了很多原因,最后用一句代码实现

  6. html5页面图片切换,HTML5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...

  7. html单页面原理,HTML5单页面手势滑屏切换原理分析

    H5现在可谓也是编程世界的主流,H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,下面通过本文简单说一下其实现原理和 ...

  8. html离开页面时,js实现用户离开页面前提示是否离开此页面的方法(包括浏

    本文实例讲述了js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件).分享给大家供大家参考.具体如下: 用户离开页面前,提示是否离开此页面(包括浏览器按钮事件) 如果在退出页面时需要弹出 ...

  9. 【Echarts】当页面宽度改变时如何使图表宽度自适应

    问题: 当对echats不作任何处理时,图表宽度不会自适应,如图所示(变绿的区域为echarts选中的div). 加载完后: 收缩浏览器页面之后: 解决方法: 编写js函数,当页面大小变化时重新加载图 ...

最新文章

  1. SQL与NoSQL区别
  2. [ubuntu] 摆脱一直敲打‘Y'('yes')的困境
  3. Matlab:绘制简单能量的接收机工作特性曲线(Energy_detection_simulation_ok)
  4. oracle配置首选项主目录名_ArduinoIDE安装与配置
  5. OpenStack 存储服务 Cinder存储节点部署LVM (十四)
  6. bat基础学习--bat批量执行其他bat(startcall),bat执行后暂停(调试)关闭,批量执行关闭exe----基础
  7. linux du命令参数及用法详解---linux统计磁盘空间大小命令
  8. MT【91】空间余弦定理
  9. 常用电源管理稳压IC一览
  10. python re findall 再次应用
  11. Mq的幂等性问题分析和基本处理
  12. python中os库用法详解(总结)
  13. DotNetTextBox V3.0 所见即所得编辑器控件Ver3.2.8 Free(免费版)
  14. ★简单明确( ̄︶ ̄)↗——百度网盘秒传链接教程(使用火狐浏览器)
  15. GoogleEarth截图技巧(转)
  16. 用手机通过wifi监视家里电脑的屏幕防止小孩乱上网
  17. 常见蛋白质种类_常见蛋白粉种类大全,你选择对了吗?
  18. 全网一触即发,自媒体人的内容分发全能助手——融媒宝
  19. 网站域名购买、申请、审核、解析
  20. Gremlins.js – 模拟用户随机操作的 JS 测试库

热门文章

  1. 内是独体字还是半包围_包是独体字还是半包围包是独体字还是半包围结构
  2. 如何解决安装adobe系列软件提示已损坏无法打开的问题
  3. TOSCA自动化测试工具--Convert to Template
  4. python语言运行效率高_如何评价说PYTHON是最快的语言?
  5. 量子推断(quantum inference)Grover算法
  6. 青年DAO x EWA Academy web3系列课程,将于11.2周三上线
  7. DFS与BFS 的爱恨情仇
  8. 解决react在安装antd之后出现Module not found: Can't resolve './locale' in。。。的问题
  9. JSP:对象(Attribute)的作用域
  10. 25天破千万,胡轩108新国货产品凭什么媲美国际大牌?