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

首先,在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日

相关文章

  • javascript判断并获取注册表中可信任站点的方法

    确保网站在浏览器端的JavaScript运行环境下可以判断并获取注册表中可信任站点是很重要的。以下是一些完整的步骤: 在浏览器端使用ActiveXObject对象来访问注册表 在Internet Explorer浏览器中,可以使用ActiveXObject对象来访问注册表。以下是如何使用它来获取可信任站点列表的示例: var WshShell = new A…

    JavaScript 2023年6月10日
    00
  • JavaScript学习笔记之ES6数组方法

    JavaScript学习笔记之ES6数组方法 JavaScript是一种高级编程语言,广泛应用于Web开发中,也是学习编程的一个重要工具。ES6是JavaScript的第六个版本,引入了许多新特性,其中包括一组有用的数组方法,能够大大简化数据集合的处理。本篇文章将深入介绍ES6数组方法,为读者提供完整的学习攻略。 一、ES6数组方法介绍 ES6引入的数组方法…

    JavaScript 2023年5月27日
    00
  • 微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)

    微信小程序中,为了提高用户体验,往往需要对一些按钮或表单组件进行防止多次点击或输入内容多次验证,以避免用户重复提交数据或误操作。这时,我们可以使用函数防抖来实现这些效果。 函数防抖是指在一段时间内,多次触发同一事件,只执行一次函数。具体而言,是在延迟时间内,如果再次触发了同一事件,则清空之前的计时器并重新开始计时,直到延迟时间过去后再触发该事件时才会执行真正…

    JavaScript 2023年6月10日
    00
  • 详解JavaScript类型判断的四种方法

    详解JavaScript类型判断的四种方法 JavaScript 是一种弱类型语言,在使用时需要对数据的类型进行判断和转换。本文将介绍常见的 JavaScript 类型判断方法,包括: typeof instanceof Object.prototype.toString.call() constructor 1. typeof typeof 是 JavaS…

    JavaScript 2023年5月18日
    00
  • 整理JavaScript对DOM中各种类型的元素的常用操作

    整理JavaScript对DOM中各种类型的元素的常用操作攻略 DOM是文档对象模型(Document Object Model)的缩写,JavaScript通过DOM对HTML页面中的各种元素进行操作,从而实现动态网页效果。在DOM中,各种类型的元素均可以通过JavaScript进行操作。下面,我们将详细讲解如何使用JavaScript对DOM中各种类型的…

    JavaScript 2023年6月10日
    00
  • javascript实现查找数组中最大值方法汇总

    JavaScript实现查找数组中最大值方法汇总 对于数组中的最大值查找,JavaScript 提供了多种实现方式,这里将介绍最常用的三种方法: 方法一: for循环遍历数组,逐一比较大小 该方法的实现思路是通过 for 循环遍历整个数组,不断更新当前最大值。代码示例如下: function getArrayMax(arr) { let max = arr[…

    JavaScript 2023年6月10日
    00
  • JS实现时间格式化的方式汇总

    让我来为你详细讲解如何实现JavaScript时间格式化。 1. 背景 在日常编程中,我们常常需要将时间戳转换为可读的时间格式,比如将 1616685660000 转换为 2021-03-25 16:14:20 的形式。JavaScript提供了以下几种方式来实现时间格式化: 使用原生JavaScript Date对象的 toLocaleString() 方…

    JavaScript 2023年5月27日
    00
  • 详解从react转职到vue开发的项目准备

    下面我会给出“详解从React转职到Vue开发的项目准备”的完整攻略,并且采用Markdown的标准格式,以方便阅读和理解。 前言 React和Vue是现在比较热门的前端框架,而React和Vue之间的语法又有一定的差异,所以,如果需要从React转职到Vue开发,需要在项目准备的时候做出一些调整。下面,我会介绍如何在项目准备的时候做好转职前的准备工作。 调…

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