iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >移动端touch拖动和click事件冲突问题解决
  • 721
分享到

移动端touch拖动和click事件冲突问题解决

2024-04-02 19:04:59 721人浏览 安东尼
摘要

目录实现效果准备实现问题分析解决通过一个悬浮球交互功能的案例来阐述问题,以及解决办法。 实现效果 类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果 可以点击拖动,然后吸附在窗口边缘点

通过一个悬浮球交互功能的案例来阐述问题,以及解决办法。

实现效果

类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果

  • 可以点击拖动,然后吸附在窗口边缘
  • 点击悬浮球,可以跳转界面,或者更改悬浮球的形态

准备

  • 移动端使用 touch事件类型:

touchstart当用户在触摸平面上放置了一个触点时触发 (手指放到屏幕上)

touchmove当用户在触摸平面上移动触点时触发 (手指在屏幕上滑动)

touchend当一个触点被用户从触摸平面上移除(抬起手指)

touchcancel终止触摸事件

多点触控

  • TouchEvent.targetTouches 只读

一个 TouchList 对象,是包含了如下触点的 Touch 对象:触摸起始于当前事件的目标 element 上,并且仍然没有离开触摸平面的触点。

视口处于第四象限,原点在左上角

event.targetTouches.clientX // 触摸元素横坐标
event.targetTouches.clientY // 触摸元素纵坐标
  • TouchEvent.touches 只读

一个 TouchList 对象,包含了所有当前接触触摸平面的触点的 Touch 对象,无论它们的起始于哪个 element 上,也无论它们状态是否发生了变化。

实现

通过设置悬浮球定位样式,拖动的时候计算坐标,然后动态的修改悬浮球的定位偏移量,结合transtion过渡效果,实现平滑的过渡

代码比较简单,就不贴了。

问题

当给元素添加了touch事件之后,click事件就不会出发了,那么怎么模拟点击效果呢?

分析

在不了解触摸事件响应机制的时候,你可能会从计算触摸目标元素的时长或者计算触摸起始位置来判定点击行为,但是这两种方式都不是最佳的,原因有以下几点:

  • 计算触摸时长比较麻烦
  • 判断移动距离不严谨,有可能拖动了一圈又回到初始位置
  • 结合计算触摸时长和触摸元素起始位置两种方式,逻辑比较复杂

下面看我是怎么做的:

首先应该了解触摸行为的事件响应机制:

  • 如果有拖动行为,事件执行次序为:touchstart-> touchmove-> touchend
  • 没有拖动行为,事件执行次序为:touchstart-> touchend

从上面的分析来看,我们可以从touchmove 入手,继续往下看?

解决

  • touchmove事件中增加一个是否移动过的标记isMoved: true
  • touchend事件中判断isMoved是否为true,是true则按原有逻辑执行,是false则说明没有移动过,属于点击行为
  • touchend事件最后,重置isMoved为初始值false,这样每一个触摸操作都可以进入同样的逻辑,不用担心状态混乱

完美解决模拟点击行为??

以上就是移动端touch拖动和click事件冲突问题解决的详细内容,更多关于touch click事件冲突解决的资料请关注编程网其它相关文章!

--结束END--

本文标题: 移动端touch拖动和click事件冲突问题解决

本文链接: https://www.lsjlt.com/news/168599.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 移动端touch拖动和click事件冲突问题解决
    目录实现效果准备实现问题分析解决通过一个悬浮球交互功能的案例来阐述问题,以及解决办法。 实现效果 类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果 可以点击拖动,然后吸附在窗口边缘点...
    99+
    2022-11-13
  • 如何解决JS中touchstart事件与click事件冲突的问题
    这篇文章主要介绍了如何解决JS中touchstart事件与click事件冲突的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言移动互联...
    99+
    2022-10-19
  • Android事件冲突怎么解决悬浮窗拖拽问题
    本文小编为大家详细介绍“Android事件冲突怎么解决悬浮窗拖拽问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android事件冲突怎么解决悬浮窗拖拽问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。需求场...
    99+
    2023-07-05
  • vue移动端如何解决click事件延迟,封装tap等事件
    目录移动端解决click事件延迟,封装tap等事件移动端click事件失效移动端解决click事件延迟,封装tap等事件 下载vue-touch.js 引入: <script ...
    99+
    2022-11-13
  • vue移动端怎么解决click事件延迟,封装tap等事件
    小编给大家分享一下vue移动端怎么解决click事件延迟,封装tap等事件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!移动端解决click事件延迟,封装tap等...
    99+
    2023-06-29
  • 如何解决vue开发移动端使用better-scroll时click事件失效的问题
    本篇内容主要讲解“如何解决vue开发移动端使用better-scroll时click事件失效的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决vue开发移动端使用better-scro...
    99+
    2023-06-20
  • Vue中keyup.enter和blur事件冲突的问题及解决
    目录keyup.enter和blur事件冲突问题解决方法keyup.enter和blur同时触发如何规避问题描述实现代码解决办法keyup.enter和blur事件冲突问题 ...
    99+
    2022-11-13
    Vue中keyup.enter事件 Vue中blur事件 keyup.enter和blur冲突
  • 如何解决Android Libgdx中ScrollPane和Actor事件冲突问题
    小编给大家分享一下如何解决Android Libgdx中ScrollPane和Actor事件冲突问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Libgdx的...
    99+
    2023-05-30
    android libgdx
  • 如何解决JS中双击和单击事件冲突的问题
    这篇文章主要为大家展示了“如何解决JS中双击和单击事件冲突的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决JS中双击和单击事件冲突的问题”这篇文章吧...
    99+
    2022-10-19
  • vue开发移动端使用better-scroll时click事件失效的解决方案
    最近使用vue学习开发移动端的项目,使用了better-scroll插件做滚动。 在引入better-scroll的组件中使用@click事件的时候,点击事件失效,v-on:clic...
    99+
    2022-11-12
  • 如何解决PC端和移动端自适应问题
    这篇文章主要介绍了如何解决PC端和移动端自适应问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。做网页时,我们通常需要考虑到不同电脑屏幕尺寸,以及不同手机屏幕大小等问题,解决...
    99+
    2023-06-08
  • View事件分发原理和ViewPager+ListView嵌套滑动冲突怎么解决
    今天小编给大家分享一下View事件分发原理和ViewPager+ListView嵌套滑动冲突怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面...
    99+
    2023-06-30
  • 如何解决layui动态添加元素click等事件触发不了的问题
    这篇文章主要介绍如何解决layui动态添加元素click等事件触发不了的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在页面加载完成时候 '.add_project...
    99+
    2022-10-19
  • Android进阶 View事件体系(三):典型的滑动冲突情况和解决策略
    Android进阶 View事件体系(三):典型的滑动冲突情况和解决策略 内容概要 本篇文章为总结View事件体系的第三篇文章,前两篇文章的在这里: Android进阶 View事件体系(一):概要...
    99+
    2023-09-02
    android java ui
  • vue使用ElementUI部分组件适配移动端问题怎么解决
    本篇内容主要讲解“vue使用ElementUI部分组件适配移动端问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue使用ElementUI部分组件适配移动端问题怎么解决”吧!组件适配...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作