移动端js触摸事件详解

yizhihongxing

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

相关文章

  • Python Selenium操作Cookie的实例方法

    下面是详细讲解“Python Selenium操作Cookie的实例方法”的完整攻略: 什么是Cookie? 在网站上保存数据的一种机制,通常由服务器发送给用户的Web浏览器,并存储在本地机器上。当浏览器再次尝试连接到相同的服务器时,将发送之前存储的Cookie。 Selenium操作Cookie Selenium是一个支持Web驱动的自动化测试工具,包含一…

    JavaScript 2023年6月11日
    00
  • 在网页里看flash的trace数据的js类

    要在网页中查看Flash的trace数据,可以使用以下步骤: 导出trace数据在Flash中,使用trace()函数输出调试信息。在发布Flash时,选择“在文件中编写日志文件”选项。这样,在运行Flash时,会在指定的位置生成一个日志文件。 导入trace数据到网页中导入trace数据的工具是js类,例如:FlashConsole。FlashConsol…

    JavaScript 2023年6月10日
    00
  • 跟我学习javascript的严格模式

    接下来我将为大家详细介绍“跟我学习JavaScript的严格模式”的完整攻略。 什么是严格模式 严格模式是JavaScript的一种运行模式,通过严格模式可以对代码的执行进行限制,使代码更加严谨,减少出错的可能性。在ES5中, JavaScript引入了严格模式概念,它是一组限制 JavaScript语言的特性。在严格模式中,一些在正常模式中默许的行为,会被…

    JavaScript 2023年6月10日
    00
  • 深入理解Jquery表单验证(使用formValidator)

    深入理解JQuery表单验证(使用formValidator) 简介 JQuery表单验证是前端开发中经常使用到的技术之一,它可以对用户输入的表单数据进行自定义的验证。本篇文章将介绍如何使用 JQuery 插件 formValidator 进行表单验证。 安装 首先需要在项目中引入 JQuery 和 formValidator。 <head> &…

    JavaScript 2023年6月10日
    00
  • JProfiler11使用教程之JVM调优问题小结

    下面我将详细讲解“JProfiler11使用教程之JVM调优问题小结”的完整攻略。 简介 JProfiler是一个功能强大的Java应用程序性能监控和调优工具。它可以帮助开发者识别和优化应用程序中的性能瓶颈,并提供了丰富的监控和调试功能,如CPU、内存、线程、GC等。本文主要介绍如何使用JProfiler进行JVM调优。 步骤 1. 安装JProfiler …

    JavaScript 2023年6月11日
    00
  • js常用自定义公共函数汇总

    JS常用自定义公共函数是指在JS开发中常用的、可多次使用的函数,初学者建议掌握,提高开发效率。 常用自定义公共函数 1. 获取URL查询参数 在开发中,获取URL中的查询参数是很常见的需求。以下是一个获取URL中查询参数的函数: function getQueryString(name) { var reg = new RegExp("(^|&am…

    JavaScript 2023年5月27日
    00
  • JS面试必备之手写call/apply/bind/new

    以下是关于“JS面试必备之手写call/apply/bind/new”的完整攻略。 手写call和apply call和apply是JavaScript原生的方法,可以改变函数的this指向。下面是手写实现call和apply的步骤: call 将函数作为对象的一个属性。 将函数的this指向当前对象。 执行该函数。 将对象上的函数删除。 Function.…

    JavaScript 2023年6月11日
    00
  • 细品javascript 寻址,闭包,对象模型和相关问题

    以下是关于“细品 JavaScript 寻址、闭包、对象模型和相关问题”的详细攻略。 一、JavaScript 寻址 JavaScript 寻址是指在访问对象的属性或方法时,JavaScript 引擎会自动查找对象及其原型链,然后返回相应属性或方法的值或引用。具体实现方式有点类似于链表,会一层层向上查找直到找到目标属性或方法。 例如,我们可以创建一个对象 p…

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