移动端touchstart事件穿透问题,解决方案
【来源】:在开发移动端网站时,会经常徘徊在click和touchstart之间;因为touchstart虽然好用和快速响应;但是其缺点也是显而易见的,当我们大面积的使用touchstart的时候就会遇到,滚动页面的时候会频繁的触发,导致其不友好的体验;所以,不能单独的说哪个好与不好,而应该利用其长处,规避其缺点;
而且,对于a标签,在移动端的跳转方式,等同于click(经过自己实际体验)
【问题】在我们在上层触发touchstart的时候,下层的click或者a标签都会同时被触发(严格的讲是350ms之后触发)
【原理】是由于click的触发时间是500ms,而touchstart触发时间是350ms,由于500>350导致的用户出现了穿透问题
【解决办法】解决问题的办法有多重多样,换个角度换个方式,就有不同的答案;下面介绍几个我在实际中行之有效的方法,仅供参考:
- 可以把touchstart换成touchend,因为触发touchend需要200ms所以可以把触发时间这个原理问题解决掉(这个也是我经常使用的,处理点击问题)
- 大家也可以在触发下面一层覆盖上一层透明层,让其穿透到这个透明层,而不是有事件的那层(这种方法增加了层级,也增加的编码的复杂度)
移动端touchstart事件穿透问题,解决方案的更多相关文章
- 【移动端】300ms延迟以及点透事件原因以及解决方案
产生原因 移动端会有双击缩放的这个操作,因此浏览器在click之后要等待300ms,看用户有没有下一次点击,也就是这次操作是不是双击 说完移动端点击300ms延迟的问题,还不得不提一下移动端点击穿透的 ...
- h5开发app,移动端 click 事件响应缓慢的解决方案
造成点击缓慢的原因 从点击屏幕上的元素到触发元素的 click 事件,移动浏览器会有大约 300 毫秒的等待时间.为什么这么设计呢? 因为它想看看你是不是要进行双击(double tap)操作. 使用 ...
- 手机端 zepto tap事件穿透
什么是事件穿透? 点击上面的一层时会触发下面一层的事件 ”google”说原因是“tap事件实际上是在冒泡到body上时才触发”,也就是Zepto的tap事件是绑定在document上的,所以会导致 ...
- 移动端click事件延迟300ms到底是怎么回事,该如何解决?
不管在移动端还是PC端,我们都需要处理用户点击,这个最常用的事件.但在touch端click事件响应速度会比较慢,在较老的手机设备上会更为明显(300ms的延迟). 问题由来 这要追溯至 2007 年 ...
- 如何解决 touchstart 事件与 click 事件的冲突
一 · 业务场景的描述 在对已完成的PC站点进行移动端适配时,我们想要站点在移动设备上有更快的响应速度,以带给用户更好的体验,此时,我们应该使用移动设备专用的事件系统,例如,使用 touchstart ...
- 移动端click事件300ms延迟
移动端click 事件延迟300ms 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟.也就是说,当我们点击页面的时候移动端浏览器并不是立即作出反应, ...
- H5案例分享:移动端touch事件判断滑屏手势的方向
移动端touch事件判断滑屏手势的方向 方法一 当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和纵坐标startY: 当触发touchmove事件时,在获取此时手指的横坐标 ...
- 移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法
这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来. 做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且to ...
- 移动端click事件延迟300ms的原因以及解决办法
这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题 —— 当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点 ...
随机推荐
- selenium===selenium自动化添加日志(转)
本文转自 selenium自动化添加日志 于logging日志的介绍,主要有两大功能,一个是控制台的输出,一个是保存到本地文件 先封装logging模块,保存到common文件夹命名为logger.p ...
- English——Unit 1
meditate v.沉思,冥想:考虑,谋划 medtiation n.沉思,冥想:深思熟虑 medium elaborate adj.精心制作的,详尽的,复杂的:v.精心制作:详述(计划, ...
- PHP获取ip与ip所在城市
1获取真实ip,本地测试总是::1 或者127.0.0.1 或者局域网的ip /** * 获取用户真实 IP */ function getIP() { static $realip; if (iss ...
- javascript 线程问题小记
大家都知道javascript是单线程执行的,alert之后,就无法执行以下的函数,浏览器是按照从上到下的顺序来安排解析显示的. 其实虽然javascript是单线程的,但是浏览器是多线程的,典型的浏 ...
- ip和子网掩码的判断
只要记住B类IP的范围就好了(128以下的是A,128~191是B段,192以上是C段) 比如B类,网络地址为前两段,后面两段是主机地址,所以网络标识应该是255.255.0.0
- Divide Two Integers——二分法的经典变形
Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...
- 一个用go写的模拟mp3文字界面播放程序
这里的技巧在于学习如何定义数据结构,更新数据结构,在哪里用指针或是地址来更新. manger.go package library import "errors" type Mus ...
- 邂逅Sass和Compass之Sass篇
对于一个从后台转到前端的web开发者来说,最大的麻烦就是写CSS,了解CSS的人都知道,它可以开发网页样式,但是没法用它编程,感觉耦合性相当的高,如果想要方便以后维护,只能逐句修改甚至重写相当一部分的 ...
- SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )
SQL 先说点废话,很久没发文了,整理了下自己当时入门 SQL 的笔记,无论用于入门,回顾,参考查询,应该都是有一定价值的,可以按照目录各取所需.SQL数据库有很多,MySQL是一种,本文基本都是SQ ...
- spring mvc 表单提交 乱码
1.在web.xml添加过滤器: <filter> <filter-name>SpringCharacterEncoding</filter-name> <f ...