当前位置: 首页 > news >正文

vue检测页面手指滑动距离,执行回调函数,使用混入的语法,多个组件都可以使用

mixin.ts
定义滑动距离的变量和检测触摸开始的方法,滑动方法,并导出两个方法
sendTranslateX.value > 250 && sendTranslateY.value < -100是向上滑动,满足距离后执行回调函数func,并在一秒内不再触发,一秒后清空距离并允许再次触发。

// touch----mixins
import { ref } from "vue";
import { useRouter } from "vue-router";
const userEntityMixin = {setup() {const router = useRouter();let sendTranslateX = ref(0);let sendTranslateY = ref(0);let sendoriginX = 0;let sendoriginY = 0;const sendTouchStart = event => {sendoriginX = event.touches[0].screenX;sendoriginY = event.touches[0].screenY;};let jumpOnce = false;const sendTouchMoveEvent = (e, func) => {if (sendTranslateX.value > 250 && sendTranslateY.value < -100) {if (jumpOnce) {setTimeout(() => {jumpOnce = false;sendTranslateX.value = 0;sendTranslateY.value = 0;}, 1000);return;}// jumpToPage();func && func();jumpOnce = true;return;}let afterX = 0;let afterY = 0;afterX = e.changedTouches[0].screenX;afterY = e.changedTouches[0].screenY;sendTranslateX.value = afterX - sendoriginX;sendTranslateY.value = afterY - sendoriginY;};return {sendTouchStart,sendTouchMoveEvent};}
};
export default userEntityMixin;

使用混入的检测滑动,增加最外层标签的监听

<divclass="customer"@touchstart="sendTouchStart"@touchmove="sendTouchMoveEvent($event, jumpToPage)">
import userEntityMixin from "@/mixins/pageTouches.ts";
const { sendTouchStart, sendTouchMoveEvent } = userEntityMixin.setup();
const jumpToPage = () =>{console.log("回调函数");
}

相关文章:

  • 微信小程序与本地MySQL数据库通信
  • 2024.7.17 ABAP面试题目总结
  • Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • 3D问界—MAYA制作铁丝栅栏(透明贴图法)
  • 用Python轻松批量生成Word合同:解放双手,喝口咖啡就搞定!☕
  • 【Karapathy大神build-nanogpt】Take Away Notes
  • Android 12系统源码_存储(二)StorageManager类介绍
  • MySQL数据库慢查询日志、SQL分析、数据库诊断
  • 1.厦门面试
  • 学习Python的IDE功能--(一)入门导览
  • uniapp小程序上传pdf文件
  • 好玩的调度技术-场景编辑器
  • Linux内核编译安装 - Deepin,Debian系
  • llama-index,uncharted and llama2:7b run locally to generate Index
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • #Java异常处理
  • 《剑指offer》分解让复杂问题更简单
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 345-反转字符串中的元音字母
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • echarts的各种常用效果展示
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • GitUp, 你不可错过的秀外慧中的git工具
  • Git同步原始仓库到Fork仓库中
  • iOS | NSProxy
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS字符串转数字方法总结
  • leetcode-27. Remove Element
  • spring cloud gateway 源码解析(4)跨域问题处理
  • vue数据传递--我有特殊的实现技巧
  • windows下如何用phpstorm同步测试服务器
  • 当SetTimeout遇到了字符串
  • 关于Flux,Vuex,Redux的思考
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 爬虫模拟登陆 SegmentFault
  • 一个完整Java Web项目背后的密码
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 阿里云服务器购买完整流程
  • 函数计算新功能-----支持C#函数
  • 通过调用文摘列表API获取文摘
  • 选择阿里云数据库HBase版十大理由
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (汇总)os模块以及shutil模块对文件的操作
  • .a文件和.so文件
  • .NET Core跨平台微服务学习资源