js实现touch移动触屏滑动事件

yizhihongxing

首先,在JS中实现touch移动事件需要以下步骤:

1.监听touch事件,获取移动的距离及方向
2.根据移动的距离及方向判断滑动操作:是垂直滑动还是水平滑动
3.根据滑动的距离改变页面元素的位置
4.结束滑动后执行相应的操作,比如改变元素的样式或者执行相关动画

下面是JS实现touch移动事件的完整示例:

<!DOCTYPE html>
<html>
<head>
    <title>JS touch事件</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style type="text/css">
    #box{
        width: 100px;
        height: 100px;
        background-color: #f00;
        position: absolute;
        left: 0;
        top: 0;
        transition: all 0.3s ease-out;
    }
    </style>
</head>
<body>
    <div id="box"></div>
    <script type="text/javascript">
    var start_x = 0, start_y = 0;
    var end_x = 0, end_y = 0;
    var diff_x = 0, diff_y = 0;
    var box = document.getElementById("box");
    // 监听touchstart事件
    box.addEventListener("touchstart", function(event){
        start_x = event.touches[0].pageX;
        start_y = event.touches[0].pageY;
    });
    // 监听touchmove事件
    box.addEventListener("touchmove", function(event){
        event.preventDefault();
        end_x = event.touches[0].pageX;
        end_y = event.touches[0].pageY;
        diff_x = end_x - start_x;
        diff_y = end_y - start_y;
        // 判断滑动方向
        if(Math.abs(diff_x) > Math.abs(diff_y)){
            // 水平滑动
            box.style.left = parseFloat(box.style.left) + diff_x + "px";
        } else if(Math.abs(diff_x) < Math.abs(diff_y)){
            // 垂直滑动
            box.style.top = parseFloat(box.style.top) + diff_y + "px";
        }
        start_x = end_x;
        start_y = end_y;
    });
    // 监听touchend事件
    box.addEventListener("touchend", function(event){
        event.preventDefault();
        if(parseFloat(box.style.left) < 0){
            box.style.left = "0px";
        } else if(parseFloat(box.style.top) < 0){
            box.style.top = "0px";
        } else if(parseFloat(box.style.left) > window.innerWidth - box.clientWidth){
            box.style.left = window.innerWidth - box.clientWidth + "px";
        } else if(parseFloat(box.style.top) > window.innerHeight - box.clientHeight){
            box.style.top = window.innerHeight - box.clientHeight + "px";
        }
    });
    </script>
</body>
</html>

在上述代码中,我们通过addEventListener函数监听box元素的touchstart、touchmove、touchend事件,根据移动的距离及方向判断滑动操作,并根据滑动的距离改变页面元素的位置。当滑动结束后,我们还根据移动的距离判断是否需要执行相应的操作,比如将元素移动到正确的位置上。

下面是另一个示例代码,这个代码实现了一个简单的拖放功能。代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>JS拖放功能</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style type="text/css">
    #box{
        width: 100px;
        height: 100px;
        background-color: #f00;
        position: absolute;
        left: 0;
        top: 0;
    }
    </style>
</head>
<body>
    <div id="box"></div>
    <script type="text/javascript">
    var start_x = 0, start_y = 0;
    var diff_x = 0, diff_y = 0;
    var box = document.getElementById("box");
    box.addEventListener("touchstart", function(event){
        event.preventDefault();
        start_x = event.touches[0].pageX - parseFloat(box.style.left);
        start_y = event.touches[0].pageY - parseFloat(box.style.top);
    });
    box.addEventListener("touchmove", function(event){
        event.preventDefault();
        box.style.left = event.touches[0].pageX - start_x + "px";
        box.style.top = event.touches[0].pageY - start_y + "px";
    });
    box.addEventListener("touchend", function(event){
        event.preventDefault();
    });
    </script>
</body>
</html>

在这个示例代码中,我们通过监听box元素的touchstart、touchmove、touchend事件,计算出触摸点相对于box左上角的坐标,然后根据移动的距离改变box元素的位置。当拖动结束后,我们并没有执行任何操作,因此box元素会停留在最后的位置上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现touch移动触屏滑动事件 - Python技术站

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

相关文章

  • 用js实现in_array的方法

    下面我将详细讲解如何用JS实现in_array的方法。 一、in_array的功能 首先,我们先来介绍一下in_array的功能。in_array是PHP语言中用来检查一个值是否在一个数组中的方法,其返回值为布尔类型,即true或false。如果该值存在于该数组中,则返回true,否则返回false。 例如,我们有一个数组arr,其中包含了3个元素:[1,2…

    JavaScript 2023年5月27日
    00
  • JS中的一些常用的函数式编程术语

    关于“JS中的一些常用的函数式编程术语”,下面是一份完整的攻略。 函数式编程术语简介 函数式编程是一种编程范式,它强调将计算过程看作是函数之间的相互调用。在函数式编程中,我们写的代码是由许多小的函数组成的,每个函数都是不可变的,并且不影响外部环境的状态。 在函数式编程中,有许多术语和概念,这些概念可以让你更好地理解函数式编程和编写更好的代码。 纯函数 在函数…

    JavaScript 2023年5月27日
    00
  • JS与C#编码解码

    JS和C#都内置了编码和解码的功能,并提供了多种编码和解码方式。下面我将具体讲解JS和C#中的编码和解码,并提供两个示例来演示编码和解码的过程。 JS中的编码和解码 在JS中,我们通常使用encodeURI和encodeURIComponent来对URL进行编码,使用decodeURI和decodeURIComponent对URL进行解码。下面是具体的使用方…

    JavaScript 2023年5月20日
    00
  • 解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

    首先,这个正则表达式用于验证邮箱的格式是否正确。下面我会逐个解读每一个符号的含义。 ^ 表示匹配字符串的开头。 \w+ 表示匹配字母、数字、下划线至少一次,这部分表示邮箱用户名部分。 ([-+.]\w+)* 表示匹配特殊字符 -、+、. 后面跟一个或多个字母、数字、下划线,0次或多次。这部分表示邮箱用户名中的特殊字符部分,可以没有。 @ 表示匹配到 at 符…

    JavaScript 2023年6月10日
    00
  • React中完整实例讲解Recoil状态管理库的使用

    下面我将详细讲解React中完整实例讲解Recoil状态管理库的使用的完整攻略: 1. 什么是Recoil状态管理库 Recoil是一个由Facebook团队开发的状态管理库,用于管理React应用程序中的应用状态。它减少了在子组件中传递多层道具的需求,以及在应用程序中传递数据的繁琐过程。 Recoil与其他状态管理库不同之处在于它提供了两种新的概念:ato…

    JavaScript 2023年6月11日
    00
  • javascript中Date对象的getDay方法使用指南

    那么接下来我会详细讲解Javascript中Date对象的getDay方法使用指南。 什么是Date对象 首先需要了解的是什么是Date对象,它是Javascript原生的日期对象之一。通过Date对象,我们能够方便地对日期进行操作、格式化和计算等操作。 Date对象的getDay方法 而Date对象的getDay方法,则是用于获取某个日期在一周中的星期几。…

    JavaScript 2023年6月10日
    00
  • 一个极为简单的requirejs实现方法

    下面是关于“一个极为简单的requirejs实现方法”的具体攻略: 一、什么是RequireJS? RequireJS是一个用于JavaScript模块化开发的工具库,它可以帮助我们实现JavaScript代码的模块化编写,便于代码管理和维护,提高开发效率。 RequireJS的核心是一个AMD(Asynchronous Module Definition,…

    JavaScript 2023年6月11日
    00
  • javascript中的return和闭包函数浅析

    关于“javascript中的return和闭包函数浅析”的完整攻略,可以分为以下几个部分。 1. return语句的基本概念和用法 在JavaScript中,return语句用于从函数中返回一个值,并且结束函数的执行。return语句可以出现在函数的任何位置,一旦执行到return语句,函数就会立刻结束并返回指定的值。return语句的语法如下: retu…

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