移动端js触摸事件详解

移动端JS触摸事件是专门针对移动端开发的触摸操作API,它能够捕获触摸屏幕的动作,比如点击、滑动、拖动、缩放等,并能够根据开发者的需求进行多样化的响应操作。本文将详细讲解移动端JS触摸事件的使用方法和应用技巧,方便开发者在移动端开发中进行快速应用。

一、移动端JS触摸事件类型

移动端JS触摸事件类型主要包括:touchstart、touchmove、touchend、touchcancel。具体解释如下:

  • touchstart:开始触摸屏幕时触发,一次完整的触摸操作只会触发一次;
  • touchmove:手指在屏幕上滑动时连续触发,如果手指不断滑动,该事件会不断触发;
  • touchend:当手指离开屏幕时触发,一次完整的触摸操作只会触发一次;
  • touchcancel:当前触摸被取消时触发,可能由于操作系统在滚动、缩放等过程中阻止了触摸事件的触发。

二、移动端JS触摸事件属性及方法

移动端JS触摸事件有一些常用的属性和方法,这些属性和方法在开发中经常被使用。这些常用属性和方法包括:

  • touches:表示当前屏幕上所有触点的数组,每个触点都是一个Touch对象;
  • targetTouches:表示当前事件目标元素上所有触点的数组,每个触点都是一个Touch对象;
  • changedTouches:表示涉及当前事件的触点,它是一个数组,仅包含已经发生变化的触点;
  • preventDefault():通常用于组织touchstart事件或touchmove事件在移动端浏览器中的默认行为,比如防止页面滚动;
  • stopPropagation():阻止事件在DOM树中的传播。

三、移动端JS触摸事件示例

示例一:手指拖动图片

示例代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>移动端JS触摸事件示例</title>
    <style type="text/css">
        img{position:absolute; left:0px; top:0px;}
    </style>
</head>
<body>
    <img src="http://placekitten.com/200/200" id="img1">
    <script type="text/javascript">
        var img = document.querySelector("#img1");
        var startX, startY, moveX, moveY, endX, endY;
        img.addEventListener("touchstart", function(e){
            startX = e.touches[0].pageX;
            startY = e.touches[0].pageY;
        });
        img.addEventListener("touchmove", function(e){
            moveX = e.touches[0].pageX;
            moveY = e.touches[0].pageY;
            this.style.left = moveX - startX + "px";
            this.style.top = moveY - startY + "px";
        });
    </script>
</body>
</html>

该示例实现了当手指拖动图片时,图片能够跟随手指移动,并在移动过程中保持手指所在的位置不变。

示例二:手指滑动轮播图

示例代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>移动端JS触摸事件示例</title>
    <style type="text/css">
        .container{position:relative; overflow:hidden; height:300px;}
        .images{position:absolute; left:0px; top:0px; width:900px;}
        .images img{width:300px; height:300px; float:left;}
    </style>
</head>
<body>
    <div class="container">
        <div class="images">
            <img src="http://placekitten.com/300/300">
            <img src="http://placekitten.com/301/300">
            <img src="http://placekitten.com/300/301">
        </div>
    </div>
    <script type="text/javascript">
        var container = document.querySelector(".container");
        var images = document.querySelector(".images");
        var imgWidth = document.querySelector(".images img").offsetWidth;
        var startX, moveX, endX, currentX = 0, timeId;
        container.addEventListener("touchstart", function(e){
            clearInterval(timeId);
            startX = e.touches[0].pageX;
        });
        container.addEventListener("touchmove", function(e){
            moveX = e.touches[0].pageX;
            images.style.left = currentX + moveX - startX + "px";
        });
        container.addEventListener("touchend", function(e){
            endX = e.changedTouches[0].pageX;
            if (endX - startX > 0) {
                currentX -= imgWidth;
            }else{
                currentX += imgWidth;
            }
            if (currentX > 0) {
                currentX = -(images.childNodes.length - 1) * imgWidth;
            }else if (currentX < -(images.childNodes.length - 1) * imgWidth) {
                currentX = 0;
            }
            images.style.transition = "left 1s";
            images.style.left = currentX + "px";
            timeId = setInterval(function(){
                currentX -= imgWidth;
                if (currentX < -(images.childNodes.length - 1) * imgWidth) {
                    currentX = 0;
                    images.style.transition = "";
                }else{
                    images.style.transition = "left 1s";
                }
                images.style.left = currentX + "px";
            }, 4000);
        });
        var timeId = setInterval(function(){
            currentX -= imgWidth;
            if (currentX < -(images.childNodes.length - 1) * imgWidth) {
                currentX = 0;
                images.style.transition = "";
            }else{
                images.style.transition = "left 1s";
            }
            images.style.left = currentX + "px";
        }, 4000);
    </script>
</body>
</html>

该示例实现了手指滑动轮播图的效果,能够根据手指滑动方向自动轮播图片,并且在手指松开后进行平滑过渡。

以上为移动端JS触摸事件的详细讲解和应用示例,相信可以帮助开发者更轻松的开发移动端应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:移动端js触摸事件详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript 图片预览效果 推荐

    JavaScript 图片预览效果是一种常见的 Web 前端功能,它可以让用户在网页中浏览图片时更加方便、便捷。本攻略将详细讲解如何使用 JavaScript 实现图片预览效果。下面是详细的步骤。 准备工作 在开始之前,我们需要准备以下内容: 一个 HTML 文件,其中包含需要预览的图片元素。 一个 JavaScript 文件,用于实现图片预览效果。 实现过…

    JavaScript 2023年6月10日
    00
  • Javascript作用域和作用域链原理解析

    Javascript作用域和作用域链是Javascript中重要的概念,理解它们可以帮助我们更好地编写代码和处理变量与函数之间的关系。 什么是Javascript作用域 Javascript作用域是指变量和函数的可访问范围。在Javascript中,有三种作用域: 全局作用域 函数作用域 块级作用域(ES6新增) 全局作用域中定义的变量和函数可以在整个应用程…

    JavaScript 2023年6月10日
    00
  • JavaScript高级程序设计 学习笔记 js高级技巧

    JavaScript高级程序设计 学习笔记 js高级技巧 概述 《JavaScript高级程序设计》是一本深入讲解JavaScript核心概念和高级技巧的经典著作。对于想要深入学习JavaScript的开发者来说,这本书是非常好的选择。本文将会分享我对该书学习过程的笔记和总结。 学习笔记 第一部分 基础知识 第一部分主要介绍了一些JavaScript的基础知…

    JavaScript 2023年5月18日
    00
  • 用JavaScript获取DOM元素位置和尺寸大小的方法

    获取DOM元素位置和尺寸大小对于前端开发来说非常重要,这篇文章将向你介绍使用JavaScript获取DOM元素位置和尺寸大小的方法。 获取DOM元素位置 getBoundingClientRect()方法 使用HTMLElement对象的getBoundingClientRect()方法可以获取一个元素相对于视口的位置和尺寸。该方法返回一个DOMRect对象…

    JavaScript 2023年6月10日
    00
  • 理解Angular数据双向绑定

    我们来详细讲解理解Angular数据双向绑定的完整攻略。数据双向绑定是Angular的核心功能之一,它可以让我们轻松地在模板中展示不同的值,同时也能让用户对输入的值做出及时的响应。以下是学习该功能的完整攻略: 了解Angular的数据双向绑定概念 数据双向绑定是指将模板中的值和组件中的属性绑定在一起,使得属性的变化会自动地反映在模板上,同时模板中的值的改变也…

    JavaScript 2023年6月11日
    00
  • 如何调试异步加载页面里包含的js文件

    调试异步加载页面里包含的JS文件是网站开发中一项非常重要的任务。在这里,我将为你提供一些调试异步加载JS的攻略和技巧。 使用Chrome DevTools调试异步加载的JS文件 Chrome DevTools 是一个非常强大的调试工具,它提供了一些重要特性来调试异步加载的 JS 文件。以下是一些示例: 1.通过Sources面板调试异步加载的JS文件 在Ch…

    JavaScript 2023年5月27日
    00
  • js怎么终止程序return不行换jfslk

    JS中终止程序有多种方式,但是通过return语句来终止程序是比较常见和方便的方法。如果使用return无法终止程序,可能是由于函数嵌套、异步操作等原因,下面我们来详细讲解如何解决。 函数嵌套 当函数嵌套的时候,使用return只能终止当前函数的执行,而不能终止外层函数的执行。这时需要使用return语句和一个标识符来协同工作,让外层函数在适当的时候捕获这个…

    JavaScript 2023年5月27日
    00
  • JavaScript 入门基础知识 想学习js的朋友可以参考下

    JavaScript 入门基础知识 本文将介绍 JavaScript 的基础知识,适合想要入门学习 JavaScript 的朋友参考。包括变量、数据类型、运算符、条件语句、循环语句、函数等基础内容。 变量 变量是存储数据的容器,在 JavaScript 中通过 var、let、const 来声明变量。 // 声明变量并初始化 var name = &quot…

    JavaScript 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部