用touchstart、touchmove、touchend简陋实现左右滑动【触摸事件】

2023-10-27

touchstart事件:当一开始触摸时所获取触发的【就算不滑动也会触发】

touchend事件:当离开触摸屏时所触发的事件

touchmove事件:当你触摸时滑动时连续发生的事件

刚开始触碰,目的要实现互动在一定的范围内滑动一个图标,超过一定的值时跳转到下一页。

  1. 要实现该效果的图标【这里我是在类里面用背景图放入我需要的图片】
    <a href="javascript:;" class="part1-touch" id="part1-touch"></a>
    
  2.         //获取到那张图片的节点 
            var touch = document.getElementById('part1-touch');
            //定义变量 
            var startIndex, endIndex, swiper, touchIndex, tranX, tranBack;
            //touchstart事件
            touch.addEventListener('touchstart', function(event) {
                event.preventDefault();
                var touch = event.changedTouches[0];
                console.log('start' + touch.pageX);
                startIndex = touch.pageX;//获取到刚开始的X轴上的值
            });
            //touchmove事件
            touch.addEventListener('touchmove', function(event) {
                event.preventDefault();
                touchIndex = event.changedTouches[0].pageX; //获取到移动时不断改变的X轴上的值
                tranX = touchIndex - startIndex;//移动过程中X轴上的差值
                console.log(tranX);
                // 在一定区域里面移动,这里限制在一定区域内移动,图标不超过规定的区域
                if (tranX > 50) {
                    tranX = 50;
                } else if (tranX < -50) {
                    tranX = -50;
                }
                //实时显示图标的位置
                $('.part1-touch').css("transform", "translateX(" + tranX + "px)");
            });
            //touchend事件 
            touch.addEventListener('touchend', function(event) {
                event.preventDefault();
                //获取最终触摸的X轴(手指离开屏幕时获取的)    
                endIndex = event.changedTouches[0].pageX;
                tranBack = endIndex - startIndex;
                console.log(tranBack);
                console.log(Math.abs(tranBack));
                //在这里同样计算差值
                if (Math.abs(tranBack) > 50) {
                    $('.kv').hide();
                }
                $('.part1-touch').css("transform", "translateX(0px)");
            });
    

    在这里我在touchmove和touchend都分别计算了差值,其实他们的差值是一样的,可是为什么我要写两个呢?在touchmove里面算的差值,我是想来控制他显示的区域 ,在touchend里面的差值我想用来计算是否超出要滑动的距离来触发隐藏该页面的。所以两者的用处是不一样的。然而在最下面的这句话则是实现了松开手的时候,该图标立马返回原位置。

     $('.part1-touch').css("transform", "translateX(0px)");

    因为上面纯碎是个人的领悟,自身能力有限,只是写出来基于参考一下。欢迎大佬们留言说一下还有什么其他方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用touchstart、touchmove、touchend简陋实现左右滑动【触摸事件】 的相关文章

  • 触摸事件 - UIControlEvents

    首先 xff0c UIControlEvents有这个几种 xff1a UIControlEventTouchDown 61 1 lt lt 0 on all touch downs UIControlEventTouchDownRepea
  • 理解Docker跨多主机容器网络

    理解Docker跨多主机容器网络 二月 15 2016 2条评论 在Docker 1 9 出世前 跨多主机的容器通信方案大致有如下三种 1 端口映射 将宿主机A的端口P映射到容器C的网络空间监听的端口P 上 仅提供四层及以上应用和服务使用
  • 用touchstart、touchmove、touchend简陋实现左右滑动【触摸事件】

    touchstart事件 当一开始触摸时所获取触发的 就算不滑动也会触发 touchend事件 当离开触摸屏时所触发的事件 touchmove事件 当你触摸时滑动时连续发生的事件 刚开始触碰 目的要实现互动在一定的范围内滑动一个图标 超过一
  • 记录一次 redis连接次数过多问题

    问题 可以看到redis 连接数 1800 左右 执行命令 redis cli info clients 查看redis 连接的客户端 redis cli client list 可以看到 idle 是空闲时间 而这个空间时间大概是每个链接
  • MySql 根据身份证号来判别所属省份年龄及性别

    一 背景 新项目要从别的系统迁移用户表信息 老的用户表里的数据有很多不规范的数据 需要通过表里的身份证号获取用户的省份 年龄 性别 二 获取方式 1 通过身份证号获取省份 SELECT CASE LEFT sfzh 2 WHEN 11 TH
  • linux读取触摸屏事件数据

    对于有触摸设备的电脑或者手机 通过cat proc bus input devices应该就能够看到触摸设备的相关信息 比如 cat proc bus input devices I Bus 0013 Vendor 0x0012 Produ
  • c++生成uuid

    不引用uuid h生成uuid方式 转自How can I generate UUID in c without using boost library Stack Overflow include
  • python读写excel时间的处理

    用python读写excel 当读写内容为时间时 会发现时间变成了浮点数 这篇文章记录了对于这种情况的处理 将时间写入excel dateFormat xlwt XFStyle dateFormat num format str yyyy
  • 小问题解决方案

    目录 error CS0246 未能找到类型或命名空间名称 DllImport 是否缺少 using 指令或程序集引用 其他信息 对 PInvoke 函数 useQtDllTest1 useQtDllTest1 Form1 screenSh
  • element左侧导航栏el-menu,菜单栏文字超出不折行问题

    在CSS样式中加上这些样式就可以了 el submenu title display flex align items center el submenu title span white space normal word break b
  • VUE不刷新页面的情况下更改浏览器链接后的query值

    在不刷新当前页面的情况下 不操作路由 但是要更改路由中的 query 参数 就好像页面只有简单路径 无 query 现在点击一下页面中的按钮 页面不刷新 但是要在浏览器的地址显示中将 query 参数修改掉 解决方法是 window his
  • 线上服务平均响应时间太长,怎么排查?

    最困难的事情就是认识自己 个人网站 欢迎访问 前言 最近线上环境某个接口服务响应时间偏长 导致用户体验超差 那平时该怎么快速的排查这类问题呢 为代码添加上详细的打印日志 不建议 一是线上环境 没法随便的重新部署更换了详细日志的代码 二是 添
  • 移动互联网终端的touch事件,touchstart, touchend, touchmove

    前言 如果我们允许用户在页面上用类似桌面浏览器鼠标手势的方式来控制WEB APP 这个页面上肯定是有很多可点击区域的 如果用户触摸到了那些可点击区域怎么办呢 诸如智能手机和平板电脑一类的移动设备通常会有一个电容式触摸屏 capacitive
  • 在 COCOS2D 中移动的触摸上绘制线条

    我正在使用 iPhone 开发一款游戏COCOS2D 其中 当用户将手指从一个点拖动到另一个点时 我需要画一条线 据我所知 我需要这样做Touches Moved method从哪里我可以获得积分 但我不知道该怎么做 有人能帮我解决这个问题
  • Android 浏览器无法正确处理 touchmove 事件

    当我尝试检查touchmove事件在这个 jsbin 演示它只在 Chrome 和 Opera for Android 中触发一次 之后立即触发touchcancel事件 而不是继续触发touchmove events 基于两者W3C 规范
  • 惯性滚动时如何同步两个元素的滚动偏移

    我需要使一个元素的滚动偏移量与另一个元素 实际上是窗口 保持同步 但在 Mobile Safari iPad 上滚动的惯性 滚动 阶段 我遇到了麻烦 我有几个 divposition fixed overflow hidden我需要保持它们
  • iOS 5 上的 jQuery 事件

    我在 jQuery 1 6 4 iOS 5 和 touchstart touchend 事件的注册方面遇到问题 显然 如标题中所述 采取以下代码
  • 无法阻止 iOS 上的“touchmove”滚动窗口

    我们正在尝试滚动 iOS Web 应用程序上的元素 同时阻止窗口本身滚动 我们正在捕捉touchmove窗口上的事件 以编程方式滚动元素并 尝试 通过调用阻止窗口本身滚动preventDefault关于活动 不幸的是 这在 Mobile S
  • 是否可以模拟 isTrusted=true

    我希望在调用 touchStart 事件时能够模拟 isTrusted true 是否有任何库或任何类型的解决方法可以实现这一点 以下是我以编程方式运行 touchStart 时的输出与实际调用 touchStart 时的输出 我正在使用移
  • 多次触摸:仅当发生触摸移动时才会触发 touchend 事件

    我想在从 ios 设备 也许以后是 android 设备 访问我的 javascript 应用程序时添加一些多点触控功能 我想提供一个类似shift键功能 用户可以用一根手指按住屏幕上的按钮 按下此按钮时 屏幕其余部分上的点击操作的行为与经

随机推荐