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日

相关文章

  • arrayToJson将数组转化为json格式的js代码

    arrayToJson是一个用于将JavaScript数组转换为JSON格式字符串的JS函数,以下是使用该函数的攻略: 1. 编写arrayToJson函数的JS代码 以下是将数组转换为JSON格式的JavaScript代码,其中的函数arrayToJson接受一个JavaScript数组作为输入参数,并输出一个JSON格式字符串: function arr…

    JavaScript 2023年5月27日
    00
  • vbs屏蔽键盘按键

    VBScript屏蔽键盘按键攻略 VBScript屏蔽键盘按键可以通过Shell.Application对象的SendKeys方法实现。在SendKeys方法中,使用{HOLD}标记可以屏蔽掉所有的键盘按键,同时使用{UNHOLD}标记可以恢复所有的键盘按键。 步骤一:在VBScript中使用SendKeys屏蔽键盘按键 以下是一个使用VBScript屏蔽键…

    JavaScript 2023年6月11日
    00
  • JavaScript进制转换实现方法解析

    JavaScript进制转换实现方法解析 背景介绍 计算机科学中,常用的进制有10进制、2进制、16进制等,但在不同的计算机环境下,进制的使用差别很大。JavaScript中提供了一些进制转换函数,可以实现不同进制之间的转换。 实现步骤 JavaScript中提供了以下几个进制转换函数:1. parseInt(string, radix):将一个字符串转换为…

    JavaScript 2023年5月28日
    00
  • node.js Web应用框架Express入门指南

    Node.js Web应用框架Express入门指南 Express是基于Node.js开发的Web应用框架,它提供了一组API来帮助开发者快速地创建Web应用程序。本指南将介绍如何入门使用Express,包括安装、配置、路由、模板引擎等方面的内容。 安装Express 首先需要安装Node.js和npm。安装完成后,可打开终端窗口,输入以下命令安装Expr…

    JavaScript 2023年5月27日
    00
  • 一文让你彻底搞清楚javascript中的require、import与export

    一文让你彻底搞清楚JavaScript中的require、import与export 在当前的JavaScript标准中,有两种方式可以导入和导出模块:CommonJS 的 require() 和 module.exports,以及 ES6 的 import 和 export。 CommonJS 的 require() 和 module.exports 在 …

    JavaScript 2023年5月27日
    00
  • JS获取当前时间戳方法解析

    JS获取当前时间戳方法解析 在JavaScript中,我们可以使用多种方法来获取当前的时间戳。本文将会介绍其中比较常用的三种方法:使用Date对象、使用时间戳函数和使用性能API。 使用Date对象 Date对象是JavaScript中提供的一个内置对象,我们可以通过该对象获取当前的时间戳。Date对象的getTime方法会返回一个13位的时间戳,以毫秒为单…

    JavaScript 2023年5月27日
    00
  • 一个简单的js动画效果代码

    下面我来详细讲解如何编写一个简单的js动画效果代码。 准备工作 在编写动画代码前,需要准备好HTML文件和CSS文件。 HTML文件 假设需要给一个按钮添加动画效果,我们可以在HTML文件中添加一个按钮元素,如: <button id="btn">按钮</button> CSS文件 我们要将按钮的样式设为相对定位(…

    JavaScript 2023年6月10日
    00
  • date.parse在IE和FF中的区别

    Date.parse()是JavaScript中对日期字符串进行解析的方法。不同浏览器对Date.parse()的支持和行为可能会有所不同。在IE和FF中,Date.parse()的行为有以下几点区别。 IE和FF中Date.parse()的格式 IE中支持的日期格式有:yyyy/MM/dd、yyyy-MM-dd、MM/dd/yyyy和MM-dd-yyyy,…

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