首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

移动】touch事件及穿透事件

,300ms 延迟的问题 解决方案,就是使用touch事件来替代 移动新增touch事件 --- 只能使用现代事件进行添加 touchstart: 触摸开始 touchmove: 触摸移动 touchend...: 触摸结束 touchcancel:touch 取消,如来电等 【扩展】:移动touch、click、tap的区别 http://t.zoukankan.com/luo1240465012-p-...因click是在touch系列事件发生后300ms才触发的,混用click和touch肯定会导致穿透问题....2) 跨页面点击穿透问题 如果按钮下面恰好是一个href属性的a标签,那么页面就会发生跳转(a标签跳转默认是click事件触发的) 解决问题: 方法一:自己封装tap事件不会有穿透问题,因为阻止了默认行为...e.preventDefault(); 方法二:吃掉touch之后的click, 使用计时器,让touch后延迟350ms再隐藏蒙层 方法三:使用fastclick.js;可以直接写click事件

1.9K10

移动,单击穿透是什么?

移动开发中,单击穿透(Clickjacking)是指在某些情况下,用户在点击一个元素时,可能会触发位于该元素下方的另一个元素上的点击事件。...为了解决单击穿透问题,可以采取以下一些常见的解决方法: 1:阻止事件冒泡: 在上层元素的点击事件处理函数中使用event.stopPropagation()方法,阻止事件向下传播到下层元素,从而避免下层元素的点击事件被触发...2:使用touchend事件替代click事件: 在移动,click事件通常会有300毫秒的延迟,而touchend事件没有延迟。通过监听touchend事件可以避免延迟触发导致的单击穿透问题。...4:调整布局和交互设计: 在设计移动界面时,避免元素的重叠或过于接近,减少单击穿透的可能性。可以通过调整布局、增加间距或使用遮罩层等方式来改善交互体验。...需要根据具体情况选择适合的解决方法,以解决或避免单击穿透问题,提升移动应用的用户体验和功能的稳定性。

25220
您找到你想要的搜索结果了吗?
是的
没有找到

从 antDesign 来窥探移动“滚动穿透”行为

移动,我们完全可以使用一种通用的解决方案来解决上述造成“滚动穿透”意外行为: 无论元素是否可以滚动时,每次元素的拖拽事件触发时我们只需要进行判断: 寻找当前触发 touchMove 事件 event.target...通过 useTouch 这个 hook 我们可以在移动配合 touchstart、onTouchMove 轻松的计算出手指拖动时的方向和距离。...useScrollLock 通用解决方案 上边我们了解了一个基础的 useTouch 关于拖拽位置计算的 hook 以及 getScrollParent 获取区域内最近的可滚动祖先元素的方法,接下来我们就来看看在移动中关于阻止...上述的代码仍然是按照我们在文章开头讲述的解决思路来解决移动滚动链接的意外行为。...为 body 添加 overflow:hidden 其实在移动并没什么太大的实际作用,我们 touchmove 事件中的处理逻辑对于阻止意外滚动行为的发生已经完全足够了。

27720

移动click延迟及zepto的穿透现象 转

穿透现象与click的延迟解决方法是分不开的,若要了解穿透现象,需要先了解click延迟的解决原理。...移动click事件300ms的延迟现象的原因: 在最早iphone的safar浏览器中,为了实现触屏中双击放大效果,当用户点击屏幕时后会判断在300ms内是否有第二次点击,如果有,就理解成双击,若没有就是单击...当你点击移动设备的屏幕时, 可以分解成多个事件,顺序依次为:touchstart — touchmove — touchend — click, 这些事件是按顺序依次触发的....如何解决穿透: 方法一:直接将上层元素的tap事件换成click事件(会出现300ms的延迟触发事件) 方法二:在click事件触发前阻止它,如在touchend的事件中使用e.preventDefault...()来阻止后续的click事件 zepto为何不使用e.preventDefault()来解决穿透问题?

1.3K10

移动事件穿透的原理与解决方案

移动设备的流行,带动了移动互联网的快速发展,很多开发者开始进入移动开发领域。...目前市面上主流的移动设备一般都使用触摸屏,触摸屏所使用的触摸事件模型与传统网页的鼠标事件模型有所区别,这种差异往往使初涉移动的开发工程师陷入困境,事件穿透问题便是其中一个,本文将带你了解事件穿透及如何在实际项目中选择合适的方案解决事件穿透问题...正是由于这种 click 事件的滞后性设计为事件穿透(点击穿透)埋下了伏笔。 什么是事件穿透 事件穿透是指触发某个目标元素的触摸事件时,会同时触发该目标元素相同位置中其他元素的鼠标点击事件。...当然不用这么麻烦,你可以在使用 touch 事件时通过调用 preventDefault() 阻止触发 click 事件。...在实际项目开发中,纯移动项目优先推荐禁用 click 事件的方法,多端项目优先推荐禁用 touch 事件的方法。

1.3K20

JS事件冒泡及阻止

事件冒泡及阻止 当一个元素接收到事件的时候,会把他接收到的事件传给自己的父级,一直到window,当然其传播的是事件,绑定的执行函数并不会传播,如果父级没有绑定事件函数,就算传递了事件,也不会有什么表现...DOCTYPE html> JS事件冒泡及阻止 div{...DOCTYPE html> JS事件冒泡及阻止 li{...有时候我们并不希望事件冒泡而去执行上级节点绑定的事件,这时候就需要阻止事件的冒泡,w3c的方法是e.stopPropagation(),IE则是使用 window.event.cancelBubble...阻止冒泡并不能阻止对象默认行为,例如submit按钮被点击后会提交表单数据,需使用e.preventDefault();阻止默认行为,IE则是window.event.returnValue = false

6.5K20

【如果你要学JS XIV】—— 移动常用事件-移动touch触摸事件

导绪移动浏览器兼容性较好,不需要考虑JS的兼容性问题,可以放心的使用原生JS书写效果,但是移动也有自己独特的地方。如触屏事件touch (也称触摸事件) , Android和IOS都有。...touchstart,touchmove,touchend 可以实现拖动元素2.但是拖动元素需要当前手指的坐标值我们可以使用targetTouches[0] 里面的pageX和pageY3.拖动的原理:手指移动计算出手指移动的距离...,然后用盒子原来的位置+手指移动的距离4.手指移动的距离 = 手指滑动中的位置 - 手指刚开始触摸的位置<!...= e.targetTouches[0].pageY - startY; // 移动盒子,盒子原来的位置+手指移动的距离 this.style.left =...x + moveX + 'px'; this.style.top = y + moveY + 'px'; // 阻止屏幕滚动行为 e.preventDefault

45300

【总结】1823- 移动滚动穿透与滚动溢出解决方案

滚动穿透 问题描述 在移动 WEB 开发的时候(小程序也雷同),如上录屏所示,如果页面超过一屏高度出现滚动条时,在 fixed 定位的弹窗遮罩层上进行滑动,它下面的内容也会跟着一起滚动,看起来好像事件穿透到下面的...DOM元素上一样,我们姑且称之为滚动穿透。...Step 1、监听弹窗最外层元素(popup)的 touchmove 事件并阻止默认行为来禁用所有滚动(包括弹窗内部的滚动元素)。...contain 阻止滚动链,滚动不会传播到祖先元素,但是会显示节点自身的局部效果。例如 Android 上过度滚动的发光效果或 iOS 上的橡皮筋效果。...none 与 contain 相同,但是会阻止自身的过度效果。

36411

Vue.js开发移动经验总结

作者:阡ゼ陌 移动适配 相对于PC端来说,移动设备分辨率百花齐放,千奇百怪,对于每一个开发者来说,移动适配是我们进行移动开发第一个需要面对的问题。...idealviewport为浏览器定义的可完美适配移动的viewport,固定不变,可以认为是设备视口宽度device-width。...user-scale=no禁止缩放 所以现在我们知道,这段在移动常见的代码的意思,即将visualviewport和layoutviewport设置为idealviewport的值;这样我们在移动就不会出现滚动条...UI出图的时候一般是有一个固定的宽度的,而我们实际的移动设备的宽度却都不太一样,但是如果页面元素的缩放比例和页面宽度的缩放比例一致,在不同尺寸的设备下我们网页的效果也将会是一致的。...键盘弹出与使用transform属性的情况在移动是很常见的,所以需要谨慎使用position:fixed。 推荐使用flex flex,即弹性布局,移动兼容性较好,能够满足大部分布局需求。

4.2K10
领券