Advertisement

HTML5实战详解:触摸事件(touchstart、touchmove和touchend)分析

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本篇文章详细解析了HTML5中用于处理触摸屏设备交互的关键触控事件,包括touchstart、touchmove及touchend,帮助读者掌握如何利用这些事件实现丰富的移动端互动功能。 ### HTML5触摸事件介绍 HTML5引入了多种用于处理移动设备上用户触摸操作的事件,包括`touchstart`、`touchmove`和`touchend`事件。这些事件是为了满足没有传统输入设备(如鼠标和键盘)的移动设备上的交互需求而设计的。最初在iOS版Safari浏览器中被引入以支持iPhone等设备的多点触控操作,并随着Android设备上浏览器的支持,逐渐成为移动Web开发中的重要元素。 ### 触摸事件详解 - **touchstart事件** `touchstart`会在用户首次触摸屏幕时触发,即便已有手指在屏幕上也依然会触发。这允许开发者立即响应用户的交互行为。 - **touchmove事件** 当用户在屏幕上移动手指时连续触发`touchmove`事件。通过调用事件对象的`preventDefault()`方法可以阻止页面内容默认滚动的行为。 - **touchend事件** 当用户从屏幕移开手指时,会触发`touchend`事件。此事件通常用于处理触控操作结束阶段的操作,如完成拖拽等动作。 - **touchcancel事件** 在系统停止跟踪触摸点(例如超出最大支持的触摸数量)的情况下触发`touchcancel`事件。该事件的确切时机需要开发者进行测试和适配。 ### 触摸事件对象 所有触摸事件都包含一些与鼠标事件类似的属性,如是否冒泡(`bubbles`) 和 是否可以取消默认行为 (`cancelable`)。此外还包含了特定于触摸的属性以提供关于触摸点更详细的信息: - **touches** 表示当前屏幕上所有活动触摸点的`Touch`对象数组。 - **targetTouches** 仅包含与事件目标直接相关的触摸点数组。 - **changeTouches** 显示自上一个事件以来状态发生变化的所有触摸点,例如从触碰开始到移动或结束等不同阶段的变化情况。 ### Touch对象属性 每个`Touch`对象都具有以下属性: - **clientXY**:相对于视口的坐标。 - **identifier**:唯一标识触摸点的ID号。 - **pageXY**:页面内的绝对位置(相对整个文档)。 - **screenXY**:屏幕上的绝对位置(相对于显示器)。 - **target**:DOM元素中的目标。 ### 实际应用示例 通过添加事件监听器并处理这些触摸事件,可以实现各种交互效果。例如,在`touchstart`时记录手指的位置,在`touchmove`期间执行滑动逻辑,并在`touchend`响应用户离开屏幕的动作。以下是一个简单的JavaScript代码片段: ```javascript function load() { document.addEventListener(touchstart, touch, false); document.addEventListener(touchmove, touch, false); document.addEventListener(touchend, touch, false); function touch(event) { var event = event || window.event; var oInp = document.getElementById(inp); switch (event.type) { case touchstart: oInp.innerHTML += Touch started ( + event.touches[0].clientX + , + event.touches[0].clientY + ); break; case touchend: oInp.innerHTML +=
Touch end ( + event.changedTouches[0].clientX + , + event.changedTouches[0].clientY + ); break; case touchmove: // 处理触摸移动的逻辑 break; } } } ``` 这段代码通过监听和响应触摸事件,并在页面上显示相关信息,来演示如何使用这些触摸事件。实际开发中可以根据具体需求设计更复杂的交互。 ### 注意事项 由于不同浏览器对触摸事件的支持存在差异,在跨平台开发时需要进行充分的测试以确保兼容性。同时还要注意屏幕尺寸与分辨率适配问题以及可能存在的其他兼容性挑战,如旧设备或操作系统不支持某些触摸事件的情况。因此在使用这些事件时应做好相应的优化处理工作。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • HTML5touchstarttouchmovetouchend
    优质
    本篇文章详细解析了HTML5中用于处理触摸屏设备交互的关键触控事件,包括touchstart、touchmove及touchend,帮助读者掌握如何利用这些事件实现丰富的移动端互动功能。 ### HTML5触摸事件介绍 HTML5引入了多种用于处理移动设备上用户触摸操作的事件,包括`touchstart`、`touchmove`和`touchend`事件。这些事件是为了满足没有传统输入设备(如鼠标和键盘)的移动设备上的交互需求而设计的。最初在iOS版Safari浏览器中被引入以支持iPhone等设备的多点触控操作,并随着Android设备上浏览器的支持,逐渐成为移动Web开发中的重要元素。 ### 触摸事件详解 - **touchstart事件** `touchstart`会在用户首次触摸屏幕时触发,即便已有手指在屏幕上也依然会触发。这允许开发者立即响应用户的交互行为。 - **touchmove事件** 当用户在屏幕上移动手指时连续触发`touchmove`事件。通过调用事件对象的`preventDefault()`方法可以阻止页面内容默认滚动的行为。 - **touchend事件** 当用户从屏幕移开手指时,会触发`touchend`事件。此事件通常用于处理触控操作结束阶段的操作,如完成拖拽等动作。 - **touchcancel事件** 在系统停止跟踪触摸点(例如超出最大支持的触摸数量)的情况下触发`touchcancel`事件。该事件的确切时机需要开发者进行测试和适配。 ### 触摸事件对象 所有触摸事件都包含一些与鼠标事件类似的属性,如是否冒泡(`bubbles`) 和 是否可以取消默认行为 (`cancelable`)。此外还包含了特定于触摸的属性以提供关于触摸点更详细的信息: - **touches** 表示当前屏幕上所有活动触摸点的`Touch`对象数组。 - **targetTouches** 仅包含与事件目标直接相关的触摸点数组。 - **changeTouches** 显示自上一个事件以来状态发生变化的所有触摸点,例如从触碰开始到移动或结束等不同阶段的变化情况。 ### Touch对象属性 每个`Touch`对象都具有以下属性: - **clientXY**:相对于视口的坐标。 - **identifier**:唯一标识触摸点的ID号。 - **pageXY**:页面内的绝对位置(相对整个文档)。 - **screenXY**:屏幕上的绝对位置(相对于显示器)。 - **target**:DOM元素中的目标。 ### 实际应用示例 通过添加事件监听器并处理这些触摸事件,可以实现各种交互效果。例如,在`touchstart`时记录手指的位置,在`touchmove`期间执行滑动逻辑,并在`touchend`响应用户离开屏幕的动作。以下是一个简单的JavaScript代码片段: ```javascript function load() { document.addEventListener(touchstart, touch, false); document.addEventListener(touchmove, touch, false); document.addEventListener(touchend, touch, false); function touch(event) { var event = event || window.event; var oInp = document.getElementById(inp); switch (event.type) { case touchstart: oInp.innerHTML += Touch started ( + event.touches[0].clientX + , + event.touches[0].clientY + ); break; case touchend: oInp.innerHTML +=
    Touch end ( + event.changedTouches[0].clientX + , + event.changedTouches[0].clientY + ); break; case touchmove: // 处理触摸移动的逻辑 break; } } } ``` 这段代码通过监听和响应触摸事件,并在页面上显示相关信息,来演示如何使用这些触摸事件。实际开发中可以根据具体需求设计更复杂的交互。 ### 注意事项 由于不同浏览器对触摸事件的支持存在差异,在跨平台开发时需要进行充分的测试以确保兼容性。同时还要注意屏幕尺寸与分辨率适配问题以及可能存在的其他兼容性挑战,如旧设备或操作系统不支持某些触摸事件的情况。因此在使用这些事件时应做好相应的优化处理工作。
  • addEventListener监听滚动
    优质
    本文通过具体实例详细解释了如何使用JavaScript中的addEventListener方法来监听网页的滚动和触摸事件,帮助开发者实现更丰富的交互功能。 这三个事件只在手机上生效:touchstart(手指开始触屏)、touchmove(手指移动)、touchend(手指触屏结束)。scroll 事件在手机和 PC 端都有效。 addEventListner 方法的参数包括 name、callback 和 optional,其中: - useCapture 表示是否使用捕获阶段。如果为 true,则表示从外到内进行;默认为 false,即使用冒泡阶段,从里到外。 - optional 对象中的 passive 属性值为 true 时,阻止不了默认事件的发生,默认值是 false。 passive: true 可以防止重写默认行为。
  • 决JS中touchstartclick冲突的方法
    优质
    本文介绍了在JavaScript开发过程中如何处理touchstart与click事件之间的冲突问题,并提供了有效解决方案。 本段落主要介绍了如何解决JS中的touchstart事件与click事件冲突的问题,并通过详细的示例代码来解释解决方案。这些内容对于学习或工作中遇到类似问题的人来说非常有参考价值,希望需要的朋友能够从中受益。
  • XPT2046及STM32代码
    优质
    本文章详细介绍了如何使用XPT2046电阻式触摸屏进行硬件连接和软件编程,并深入剖析了基于STM32微控制器的应用代码,适合电子工程爱好者和技术开发人员阅读。 XPT2046是一款AD转换器,通常用于触摸屏操作。它适用于无需复杂初始化设置的场景,在使用STM32单片机进行操作时主要通过SPI1通信。 在具体代码中,我们首先对IO口和SPI外设打开时钟,并将TOUCH-CS(Chip Select)IO口配置为推挽输出模式并设定速度为50MHz。接下来,我们将TOUCH-PEN IO口设置为内部上拉输入模式。 初始化的第二步是SPI1的配置。在进行此步骤前,需要对相关GPIO引脚设置复用推挽模式,并将它们的速度设为50MHz。然后我们使用GPIO_SetBits函数使这些引脚处于高电平状态以确保其启用。 XPT2046触摸屏校正参数通常存储于FLASH中,因此需初始化FLASH读取校准数据。如果校准不正确,则需要调用TOUCH_Adjust函数进行调整。 以上步骤完成后即可完成对XPT2046的初始化工作。此过程中不仅配置了XPT2046本身也完成了STM32单片机SPI1和GPIO的相关设置,确保触摸屏能够正常与STM32通信并运行。 实际开发中,了解这些初始化操作对于开发者来说非常重要,因为它们是硬件设备能正常工作的基础条件。通过适当的IO口配置可以控制XPT2046的操作,并且SPI的正确初始化则保证了单片机和触摸屏芯片之间的数据传输畅通无阻。这些都是实现触摸屏功能的基本前提,在完成这些设置后才能进一步开发诸如触控检测、数据读取及显示校正等功能。
  • 威纶屏密软
    优质
    本文章深入解析了威纶屏触摸屏解密软件的各项功能和操作步骤,旨在帮助用户掌握其使用技巧并提升工作效率。 步科eview触摸屏威纶屏解密软件亲测好用!
  • 在Android的Fragment中监听
    优质
    本文将详细介绍如何在Android开发中为Fragment添加触摸事件监听器,以便开发者能够更好地响应用户的交互操作。通过示例代码解析了 onTouchEvent 和 setOnTouchListener 的应用方法。 本段落主要介绍了在Android的Fragment中实现监听触摸事件的相关资料,并进行了详细的讲解。这些内容对于学习者来说具有一定的参考价值,需要了解这方面知识的朋友可以继续阅读下面的内容。
  • 在Android的Fragment中监听
    优质
    本文介绍如何在Android开发中为Fragment添加触摸事件监听器,详细讲解了实现步骤和相关代码示例。 本段落介绍如何在Fragment中监听触摸事件的方法。众所周知,在Activity中有onTouchEvent方法可以用来处理触摸事件。 然而,对于Fragment来说,并不存在这个方法来直接实现触摸事件的监听功能。 为了解决这个问题,一种可行的办法是自己手动实现一个用于分发触摸事件的功能机制。
  • ABB屏软400问答
    优质
    《ABB触摸屏软件详解400问答》一书详细解答了关于ABB触摸屏软件的常见问题和应用场景,旨在帮助读者全面掌握该软件的操作与应用技巧。 ABB触摸屏组态软件用于CP400系列触摸屏的配置,并与ABB PLC通过以太网进行通讯。
  • iOS中UIScrollView的响应
    优质
    本文探讨了在iOS开发中使用UIScrollView时遇到的触摸事件响应问题,并提供了可能的解决方案和优化建议。 在iOS开发过程中,`UIScrollView`是一个非常关键的组件,它允许用户通过滚动来查看超出屏幕范围的内容。处理触摸事件是实现丰富交互效果的重要环节之一。本段落将深入探讨如何利用`touchEvent`机制使`UIScrollView`响应用户的操作,并讨论当移动(move)和触控移动(touchMove)同时存在的时候应采取的策略。 在iOS系统中,触摸事件指的是用户对屏幕进行的操作,包括按下、拖动以及释放等动作。这些事件被用来控制`UIScrollView`中的滚动行为。每当一个触摸事件发生时,`UIScrollView`会首先判断该事件是否应该传递给其子视图处理;如果子视图可以且愿意接收这个触控信号,则由它来处理这一系列操作。反之,若无其他组件对此做出响应,系统将默认交由`UIScrollView`自身接管并执行相应的滚动动作。 在处理移动(touchMove)事件的过程中,`UIScrollView`会根据用户手指的滑动轨迹计算出合适的滚动距离,并更新显示区域的位置信息。这里,“move”通常指的是内容视图本身的位移变化;而“touchMove”则特指用户的触控操作所引发的一系列连续性动作。 为了使移动(move)和触摸移动(touchMove)同时发挥作用,`UIScrollView`必须具备一套合理的事件分发机制:一方面要确保子视图能够响应点击、长按等基础手势而不影响滚动;另一方面在用户开始进行滑动时迅速捕捉到触控信号并保证其顺畅执行。这种设计使得用户可以在不中断整体滚动的情况下与屏幕上的其他交互元素互动。 开发者还可以通过重写`touchesBegan:withEvent:`, `touchesMoved:withEvent:` 和 `touchesEnded:withEvent:`等方法来自定义`UIScrollView`的触摸行为,并利用如`scrollViewDidScroll:`这样的代理函数来监控和控制其滚动过程。这有助于实现更复杂的手势识别逻辑。 总之,理解并掌握如何通过处理触控事件让`UIScrollView`响应用户操作是开发出高效流畅界面的基础之一。通过对移动(move)与触控移动(touchMove)间关系的理解及合理协调使用,能够帮助开发者构建更加自然且用户体验友好的iOS应用。
  • 电容屏与其它屏的对比-电容
    优质
    本文深入探讨了电容触摸屏与其他类型触摸屏的技术特点和应用优势,旨在为读者提供全面的比较分析,帮助理解电容触摸屏的独特魅力。 电容触摸屏与其他类型触摸屏相比具有以下优点: 1. 支持真实多点触控。 2. 透明度高。 3. 耐用性好。 4. 分辨率高。