vue3 页面左右滑动钩子封装

 

// useSwiper.js文件
import { ref, onMounted, onUnmounted } from "vue";
export function useSwiper({tabList, //tab数据curTabId,// 当前tab idcurTabIndex,// 当前tab 索引tabChange,// tab改变事件animation,// 动画animationData,// 动画
}) {let minOffset = ref(50); //最小偏移量,低于这个值不响应滑动处理let maxOffset = ref(200); //最大偏移量,低于这个值不响应滑动处理let minTime = ref(60); // 最小时间,单位:毫秒,低于这个值不响应滑动处理let startX = ref(0); //开始时的X坐标let startY = ref(0); //开始时的Y坐标let startTime = ref(0); //开始时的毫秒数function touchStart(e) {startX.value = e.touches[0].pageX; // 获取触摸时的x坐标startY.value = e.touches[0].pageY; // 获取触摸时的y坐标startTime.value = new Date().getTime(); //获取毫秒数}function touchMove(e) {animation.translateY(20).step();animationData.value = animation.export();setTimeout(() => {animation.translateY(0).step();animationData.value = animation.export();}, 150);}function touchCancel(e) {startX.value = 0; //开始时的X坐标startY.value = 0; //开始时的Y坐标startTime.value = 0; //开始时的毫秒数}function touchEnd(e) {var endX = e.changedTouches[0].pageX;var endY = e.changedTouches[0].pageY;var touchTime = new Date().getTime() - startTime.value; //计算滑动时间//开始判断//1.判断时间是否符合if (touchTime >= minTime.value) {//2.判断偏移量:分X、Yvar xOffset = endX - startX.value;var yOffset = endY - startY.value;if (Math.abs(xOffset) >= Math.abs(yOffset) &&Math.abs(xOffset) >= minOffset.value &&Math.abs(yOffset) <= 50 &&Math.abs(xOffset) / Math.abs(yOffset) > 3) {//左右滑动console.log("滑动");if (xOffset < 0) {// console.log('向左滑动')if (curTabIndex.value + 1 < tabList.value.length) {curTabIndex.value++;} else return;} else {// console.log('向右滑动')if (curTabIndex.value > 0) {curTabIndex.value--;} else return;}curTabId.value = tabList.value[curTabIndex.value].id;tabChange();}} else {// console.log('滑动时间过短', touchTime)}}return { touchStart, touchMove, touchCancel, touchEnd };
}

页面使用示例:

// vue页面
<template><div@touchstart="touchStart"@touchmove="touchMove"@touchend="touchEnd"@touchcancel="touchCancel":animation="animationData">// 滑动内容</div>
</template><script setup>import { useSwiper } from "@/utils/useSwiper";const tabList = reactive([{name: "新闻",id: '101',index: 0,},{name: "动漫",id: '102',index: 1,},]);let curTabId = ref(tabList[0].id); // 当前tab的idlet curTabIndex = ref(tabList[0].index); // 当前tab的索引let animation = reactive(uni.createAnimation()); // uni动画(选用)let animationData = ref({}); // 动画(选用)const { touchStart, touchMove, touchEnd, touchCancel } = useSwiper({tabList,curTabId,curTabIndex,tabChange,animation,animationData,});// tab切换事件function tabChange(item) {// do something}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/30454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jeecg spring数据源用户名和密码加密 避免明文安全漏洞

1.目的 由于系统部署在互联网&#xff0c;配置文件中的数据库账号密码使用明文&#xff0c;存在安全隐患&#xff0c;做等保测试时要求对其加密。 2.实现方法 Jeecg框架本身有PasswordUtil可以使用PBEWITHMD5andDES进行加密&#xff0c;这里为方便改造&#xff0c;且安全性较…

探索数据分析无限潜能:vividime Desktop助力企业智能决策

在数字化浪潮席卷全球的今天&#xff0c;数据已经成为企业最宝贵的资产之一。通过对海量数据的深度挖掘和分析&#xff0c;企业能够洞察市场趋势、优化运营流程、提升用户体验&#xff0c;从而在激烈的市场竞争中脱颖而出。永洪科技的vividime Desktop作为一款功能强大、操作简…

Scala语言:大数据开发的未来之星 - 零基础到精通入门指南

前言 随着大数据时代的到来&#xff0c;数据量的急剧增长为软件开发带来了新的挑战和机遇。Scala语言因其函数式编程和面向对象的特性&#xff0c;以及与Apache Spark的完美协作&#xff0c;在大数据开发领域迅速崛起&#xff0c;成为该领域的新兴宠儿。本篇将从零基础开始&…

【Java】Object、Objects、包装类、StringBuilder、StringJoiner

目录 1.API2.Object类3.Objects类4.包装类4.1包装类概述4.2包装类的其他常见操作 5.StringBuilder 可变字符串5.1概述5.2StringBuilder案例 6.StringJoiner 1.API API&#xff1a;应用程序编程接口&#xff0c;全称application programing interface&#xff0c;即Java已经写好…

从粉丝基础到带货数据:全方位解读TikTok带货达人的选择之道

在如今的数字营销时代&#xff0c;TikTok已成为品牌推广和产品销售的重要平台。通过与合适的TikTok带货达人合作&#xff0c;品牌可以迅速吸引大量的潜在客户&#xff0c;实现销售转化。然而&#xff0c;选择合适的TikTok达人需要慎重考虑多个因素。本文Nox聚星将和大家详细阐述…

Android入门第68天-自动更新/升级怎么做(生产级实例)

开篇 今天我们进入第68讲。 在第60天左右其实很多同学们已经进入了APP应用开发了,因为60天内容足以让大家踏上正实的Android开发生涯。 随着开发的深入,我们发觉日常工作中无非就是一些组件的嵌套、合理应用。当代码迭代、功能迭代越来越频繁后我们面临着另一个问题,即:…

mac禁用电池睡眠-mac盒盖连接显示器

mac禁用电池睡眠-mac盒盖连接显示器-mac断点盒盖连接显示器 讲解&#xff1a;mac盒盖的时候连接显示器会睡眠并断开和显示器的连接&#xff0c;只有在电池->选项->选择使用电源适配器的时候防止睡眠&#xff0c;才可以连接电源线外界显示器 但是苹果的电池相当于手机电…

hdfs文件系统增删查原理

目录 1、hdfs读取文件原理 1.1、读取流程图解 1.2、架构层面读取流程详解 1.3、源码层面读取流程详解 2、hdfs写入文件原理 2.1、写入流程图解 2.2、架构层面写入流程 2.3、源码层面写入流程 3、hdfs删除文件原理 3.1、删除文件图解 3.2、架构层面删除流程 3.3、源码…

Gobject tutorial 七

The GObject base class GObject是一个fundamental classed instantiatable type,它的功能如下&#xff1a; 内存管理构建/销毁实例set/get属性方法信号 /*** GObjectClass:* g_type_class: the parent class* constructor: the constructor function is called by g_object…

云徙科技助力竹叶青实现用户精细化运营,拉动全渠道销售额增长

竹叶青茶以其别具一格的风味与深厚的历史底蕴&#xff0c;一直被誉为茶中瑰宝。历经千年的传承与创新&#xff0c;竹叶青不仅坚守着茶叶品质的极致追求&#xff0c;更在数字化的浪潮中&#xff0c;率先打破传统&#xff0c;以科技力量赋能品牌&#xff0c;成为茶行业的领军者。…

家长必备:超全的VIP硬笔书法课程(250课完结版),手把手教附可打印控笔素材!

今天要跟大家聊聊一个特别有意思的玩意儿——硬笔书法。你没听错&#xff0c;就是那种用钢笔、圆珠笔&#xff0c;甚至铅笔就能写出漂亮字的技艺。这可不仅仅是写字那么简单&#xff0c;它是一门艺术&#xff0c;一种生活的态度。 阿星记得小时候&#xff0c;爷爷总是拿着毛笔…

http缓存及http2配置

http缓存及http2配置极大提高了网页加载得速度 1.1 nginx安装 首先是需要安装nginx 去官网下载windows版本的安装包 nginx 命令 nginx start //启动 nginx -s stop nginx -s reload // 重新运行 tasklist /fi "imagename eq nginx.exe" //进程 把打包好的文件copy…

PyTorch -- RNN 快速实践

RNN Layer torch.nn.RNN(input_size,hidden_size,num_layers,batch_first) input_size: 输入的编码维度hidden_size: 隐含层的维数num_layers: 隐含层的层数batch_first: True 指定输入的参数顺序为&#xff1a; x&#xff1a;[batch, seq_len, input_size]h0&#xff1a;[batc…

使用密钥对登录服务器

目录 1、使用密钥文件登录服务器 2、登录成功画面&#xff1a; 3、如若出现以下状况&#xff0c;则说明密钥文件登录失败 1、使用密钥文件登录服务器 首先需要上传pem文件 2、登录成功画面&#xff1a; 3、如若出现以下状况&#xff0c;则说明密钥文件登录失败 解决方法&…

嵌入式技术学习——Linux环境编程(高级编程)——shell编程

一、shell编程的基础介绍 1.为什么要进行shell编程? 在Linux系统中&#xff0c;虽然有各种各样的图形化接口工具&#xff0c;但是shell仍然是一个非常灵活的 工具。 Shell不仅仅是命令的收集&#xff0c;而且是一门非常棒的编程语言。 您可以通过使用shell使大量的任务自动化…

mfc140.dll电脑文件丢失的处理方法,这4种方法能快速修复mfc140.dll

mfc140.dll文件是一个非常重要的dll文件&#xff0c;如果它丢失了&#xff0c;那么会严重的影响程序的运行&#xff0c;这时候我们要找方法去修复mfc140.dll这个文件&#xff0c;那么你知道怎么修复么&#xff1f;如果不知道&#xff0c;那么不妨看看下面的mfc140.dll文件丢失的…

【DAMA】掌握数据管理核心:CDGA考试指南

引言&#xff1a;        在当今快速发展的数字化世界中&#xff0c;数据已成为组织最宝贵的资产之一。有效的数据管理不仅能够驱动业务决策&#xff0c;还能提升竞争力和市场适应性。DAMA国际一直致力于数据管理和数字化的研究、实践及相关知识体系的建设。秉承公益、志愿…

集合系列(二十六) -利用LinkedHashMap实现一个LRU缓存

一、什么是 LRU LRU是 Least Recently Used 的缩写&#xff0c;即最近最少使用&#xff0c;是一种常用的页面置换算法&#xff0c;选择最近最久未使用的页面予以淘汰。 简单的说就是&#xff0c;对于一组数据&#xff0c;例如&#xff1a;int[] a {1,2,3,4,5,6}&#xff0c;…

SpringBoot配置第三方专业缓存技术Ehcache

Ehcache缓存技术 我们刚才是用Springboot提供的默认缓存技术 我们用的是simple 是一个内存级的缓存 我们接下来要使用专业的缓存技术了 Ehcache 是一个流行的开源 Java 分布式缓存&#xff0c;由 Terracotta 公司开发和维护。它提供了一个快速、可扩展、易于集成的内存缓存…

如何制定适合不同行业的新版FMEA培训计划?

在快速变化的市场环境中&#xff0c;失效模式与影响分析&#xff08;FMEA&#xff09;作为一种预防性的质量控制工具&#xff0c;越来越受到企业的重视。然而&#xff0c;不同行业在FMEA应用上存在着明显的差异&#xff0c;因此制定适合不同行业的新版FMEA培训计划显得尤为重要…