移动端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日

相关文章

  • 详解JS中的立即执行函数

    详解JS中的立即执行函数 在JS中,立即执行函数(Immediately Invoked Function Expression,IIFE)是一种常见的函数调用方式。IIFE有许多不同的应用场景,例如定义模块、创建私有作用域等。本文将详细讲解IIFE的语法和使用场景,并提供两个示例说明。 语法 IIFE的基本语法如下: (function () { // 这…

    JavaScript 2023年5月28日
    00
  • $.ajax json数据传递方法

    $.ajax是jQuery中用于进行异步数据请求的函数,在web开发中使用广泛。其中,下面的攻略讲解$.ajax json数据传递方法的使用。 1. $.ajax方法的基本语法 $.ajax({ url: "/example", method: "GET", data: {}, // 数据参数 dataType: &q…

    JavaScript 2023年5月27日
    00
  • JS实现表单验证功能(验证手机号是否存在,验证码倒计时)

    请看下面的攻略。 JS实现表单验证功能(验证手机号是否存在,验证码倒计时) 概述 表单验证是Web开发中非常常见的操作,通常的表单验证方式是利用前后端的交互获取数据进行验证,但是这种方式需要进行网络请求,不仅影响用户体验,也增加了服务器的负担。而JS实现表单验证则可以在不进行网络请求的情况下,对用户输入的数据进行实时验证,从而提高用户体验以及减轻服务器压力。…

    JavaScript 2023年6月10日
    00
  • JavaScript实现计算圆周率到小数点后100位的方法示例

    首先我们需要知道如何计算圆周率。圆周率是一个无理数,用希腊字母π表示,它的值约为3.14159265358979323846。 对于JavaScript实现计算圆周率到小数点后100位的方法,我们可以使用莱布尼兹公式来完成,公式如下: π/4=1-1/3+1/5-1/7+1/9-1/11+… 其中,π是我们要求的圆周率。 在实现过程中,我们将公式求和10…

    JavaScript 2023年5月28日
    00
  • javascript绘制漂亮的心型线效果完整实例

    下面是详细讲解“javascript绘制漂亮的心型线效果完整实例”的完整攻略。 1. 前期准备 在绘制心型线前,我们需要有基本的html文件和css样式文件。html文件中需要添加一个canvas标签,而css样式设置canvas标签为画布,并赋予宽度和高度。代码如下: <!DOCTYPE html> <html lang="en…

    JavaScript 2023年6月10日
    00
  • Javascript 对象(object)合并操作实例分析

    我来详细讲解一下 “Javascript 对象(object)合并操作实例分析” 的完整攻略,过程中包含两条示例说明。 1、 操作实例说明 在 JavaScript 开发中,我们经常需要将两个或多个对象合并为一个对象,这种操作就是对象的合并。常见的合并方式有浅合并和深合并两种方式。 1.浅合并:将多个对象合并为一个对象,如果属性名相同则直接覆盖原有属性即可。…

    JavaScript 2023年5月27日
    00
  • javascript抽象工厂模式详细说明

    当面对需要根据用户的选择生成不同的产品时,我们可以使用抽象工厂模式。JavaScript抽象工厂模式是一种用于创建一组相关对象的设计模式,也被称为工厂的工厂。在抽象工厂模式中,我们创建抽象类来指定一组方法来创建一组相关的对象。然后我们创建一个或多个工厂类实现这些抽象方法,并生成一组不同的对象。这使得我们可以将工厂对象集中在一个位置,使得更容易维护和测试。 实…

    JavaScript 2023年6月10日
    00
  • JavaScript常用数组去重的方法及对比详解

    JavaScript常用数组去重的方法及对比详解 在JavaScript开发中,常常需要对数组进行去重操作。本文将详细介绍JavaScript常用的数组去重方法,并对它们进行比较和详细解释。 一、方法1:双重循环去重法 方法描述 通过双重循环遍历数组,把数组中的每个元素依次与之后的每个元素相比较,如果发现重复的元素,则把后面的元素从数组中删除。 示例代码 f…

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