移动端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请求服务器gbk文件乱码的问题

    当我们使用JavaScript从服务器请求文本数据时,可能会遇到文本编码不符合UTF-8(如GBK)的情况,导致在浏览器端显示出错了,我们需要对此进行处理。 1. 了解传统的字符编码方式 在 Web 开发初期,世界各地的计算机都有自己的字符编码规范,因此引起了字符编码混乱的情况。后来,Unicode 规范提出来,尝试解决全球字符集的问题,UTF-8 字符编码…

    JavaScript 2023年5月19日
    00
  • JavaScript 精粹读书笔记(1,2)

    JavaScript 精粹读书笔记(1,2)攻略 什么是《JavaScript 精粹》? 《JavaScript 精粹》是由Douglas Crockford所著的一本介绍JavaScript基础核心知识的书籍,书中详细的说明了JavaScript基础语法、对象、函数等重要知识,是学习JavaScript的经典著作。 简述第一章 第一章主要讲解了JavaSc…

    JavaScript 2023年5月18日
    00
  • 一文了解JavaScript用Element Traversal新属性遍历子元素

    一文了解JavaScript用Element Traversal新属性遍历子元素 什么是Element Traversal? Element Traversal是指DOM中用于遍历子元素的标准API,它包含了一系列用于访问当前DOM元素子元素的属性,其中最常用的就是children和firstElementChild等。 children属性 childre…

    JavaScript 2023年6月10日
    00
  • JavaScript setinterval延迟一秒解决方案

    当我们在使用JavaScript代码的时候,我们可能会遇到需要执行定时任务的情况。而在一些情况下,我们需要在定时任务中等待一定的时间,再执行后续的操作。这时就可以使用setInterval延迟一定时间进行操作。但是,要注意setInterval不是严格间隔时间执行,而是间隔一段时间后才会执行。下面是针对“JavaScript setInterval延迟一秒解…

    JavaScript 2023年6月11日
    00
  • JavaScript实现简易购物车最全代码解析(ES6面向对象)

    JavaScript实现简易购物车最全代码解析(ES6面向对象)是一篇详细讲解JavaScript购物车实现的文章,提供了完整的代码和注释,可以帮助初学者更好地理解面向对象的编程思想和JavaScript语言的运用。 该文章的实现过程主要分为以下几个步骤: 定义CartItem类 首先定义一个CartItem类,用于表示某一个商品的信息,包括商品的id、na…

    JavaScript 2023年6月10日
    00
  • 总结JavaScript中布尔操作符||与&&的使用技巧

    下面是关于“总结JavaScript中布尔操作符||与&&的使用技巧”的攻略: 1. 什么是布尔操作符 布尔操作符是指用于比较两个值并返回一个布尔值的运算符。在JavaScript中,常用的布尔操作符有 &&(与)、||(或)和!(非)。 2. 布尔操作符||(或) 2.1 基本使用 布尔操作符||的作用是在两个操作数中,只要…

    JavaScript 2023年6月11日
    00
  • javascript 产生随机数的几种方法总结

    下面我将详细讲解“javascript 产生随机数的几种方法总结”的完整攻略。 1. Math.random()方法 介绍 Math.random() 方法用于返回一个0~1之间的随机浮点数。 语法 Math.random() 示例 // 返回0~1之间的随机数 const randomNum = Math.random(); console.log(ran…

    JavaScript 2023年5月28日
    00
  • javascript 特性检测并非浏览器检测

    JavaScript特性检测是一种技术,用于检测一个网站或应用程序是否支持所需的特定JavaScript特性。与浏览器检测不同,它测试一个特定的功能是否可用,而浏览器检测则简单地表明用户使用的浏览器。 下面是进行JavaScript特性检测的攻略: 步骤 1.判断所需功能是否可用: 首先,确定您需要的功能是否可用。这通常涉及询问JavaScript环境的功能…

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