vue2设置横向滚动指令

图片横向滑动展示效果

在这活动里插入图片描述在这里插入图片描述

创建directives.js文件

// 横向列表拖拽
const draggleScrollX = {inserted(el, binding) {let isDragging = false;let startX = 0;let scrollLeft = 0;el.classList.add("draggle-horizontal");// 添加监听事件-鼠标按下const onMouseDown = (event) => {isDragging = true;// 鼠标位置和初始滚动位置startX = event.pageX - el.offsetLeft;scrollLeft = el.scrollLeft;el.style.cursor = "grabbing";el.style.userSelect = "none";};// 鼠标离开或者松开const onMouseUpOrLeave = () => {isDragging = false;el.style.cursor = "auto";el.style.userSelect = "";setTimeout(() => {const childrenNodes = Array.from(el.children);childrenNodes.forEach((childrenNode) => {childrenNode.style.pointerEvents = "all";});// 粘滞定位if (binding.modifiers.snap) {// const maxScrollWidth = el.scrollWidth - el.clientWidth; // 最大滚动宽度const scrollStep = [0]; // 每个值的滚动stepchildrenNodes.forEach((childrenNode, index) => {const rectWidth = childrenNode.getBoundingClientRect().width;const style = window.getComputedStyle(childrenNode);const nodeWidth = rectWidth + parseFloat(style.marginLeft) + parseFloat(style.marginRight);if (index !== childrenNodes.length - 1) {scrollStep[index + 1] = nodeWidth + scrollStep[index];}});const diffScroll = scrollStep.map((step) => Math.abs(step - el.scrollLeft));const minDiffIndex = diffScroll.indexOf(Math.min(...diffScroll));el.scrollTo({ left: scrollStep[minDiffIndex], behavior: "smooth" });}}, 100);};// 鼠标移动const onMouseMove = (event) => {if (!isDragging) return;const x = event.pageX - el.offsetLeft;const walk = x - startX;el.scrollLeft = scrollLeft - walk;Array.from(el.children).forEach((childrenNode) => {childrenNode.style.pointerEvents = "none";});// 触发自定义事件,传递当前滚动位置  不需要可以不用这部分代码const scrollEvent = new CustomEvent("draggle-scroll-x", {detail: {scrollLeft: el.scrollLeft,},});el.dispatchEvent(scrollEvent);};// 设置初始样式el.style.cursor = "auto";el.style.overflow = "auto";el.style.scrollbarWidth = "none";el.style.cssText += "::-webkit-scrollbar { display: none; }";el._dragEvents = {onMouseDown,onMouseUpOrLeave,onMouseMove,};el.addEventListener("mousedown", onMouseDown);el.addEventListener("mousemove", onMouseMove);el.addEventListener("mouseup", onMouseUpOrLeave);el.addEventListener("mouseleave", onMouseUpOrLeave);},unbind(el) {const { onMouseDown, onMouseUpOrLeave, onMouseMove } = el._dragEvents || {};el.removeEventListener("mousedown", onMouseDown);el.removeEventListener("mousemove", onMouseMove);el.removeEventListener("mouseup", onMouseUpOrLeave);el.removeEventListener("mouseleave", onMouseUpOrLeave);},
};
export { draggleScrollX };

.vue文件内使用 vue2

import { draggleScrollX } from "../../utils/directives.js";
export default {directives: {draggleScrollX: draggleScrollX,},
}

最外部的div上面使用

<div class="swiper" v-draggle-scroll-x @draggle-scroll-x="handleScroll">
</div>

@draggle-scroll-x=“handleScroll” 这个函数是为了获取到滚动的距离 也就是滚动定位 可以做一些处理

handleScroll(event) {const scrollLeft = event.detail.scrollLeft;console.log("滚动的距离",scrollLeft);}

.snap加了吸附粘滞的了 但是效果不是特别明显

<div class="swiper" v-draggle-scroll-x.snap @draggle-scroll-x="handleScroll">
</div>

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

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

相关文章

城市霓虹灯夜景拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 在城市霓虹灯夜景拍摄中&#xff0c;由于现场光线复杂等因素&#xff0c;照片可能无法完全呈现出当时的视觉感受。通过 Lr 调色&#xff0c;可以弥补拍摄时的不足。例如&#xff0c;运用基本调整面板中的曝光、对比度、阴影等工具&#xff0c;可以处理出画面的整体明暗…

20250307确认荣品PRO-RK3566开发板在Android13下的以太网络共享功能

20250307确认荣品PRO-RK3566开发板在Android13下的以太网络共享功能 2025/3/7 13:56 缘起&#xff1a;我司地面站需要实现“太网络共享功能”功能。电脑PC要像连接WIFI热点一样连接在Android设备/平板电脑上来实现上网功能/数据传输。 Android设备/平板电脑通过4G/WIFI来上网。…

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档&#xff0c;内容非常全面&#xff0c;从原理和具体的应用&#xff0c;大家可以认真看看。 北大 DeepSeek 系列 1&#xff1a;提示词工程和落地场景.pdf  北大 DeepSeek 系列 2&#xff1a;DeepSeek 与 AIGC 应用.pdf  清华 Deep…

MYSQL之创建数据库和表

创建数据库db_ck &#xff08;下面的创建是最好的创建方法&#xff0c;如果数据库存在也不会报错&#xff0c;并且指定使用utf8mb4&#xff09; show databases命令可以查看所有的数据库名&#xff0c;可以找到刚刚创建的db_ck数据库 使用该数据库时&#xff0c;发现里面没有…

用Python写一个算24点的小程序

一、运行界面 二、显示答案——递归介绍 工作流程&#xff1a; 1. 基本情况&#xff1a;函数首先检查输入的数字列表 nums 的长度。如果列表中只剩下一个数字&#xff0c;它会判断这个数字是否接近 24&#xff08;使用 abs(nums[0] - 24) < 1e-10 来处理浮点数精度问题&…

每天五分钟深度学习框架PyTorch:使用残差块快速搭建ResNet网络

本文重点 前面我们使用pytorch搭建了残差块&#xff0c;本文我们更进一步&#xff0c;我们使用残差块搭建ResNet网络&#xff0c;当学会如何搭建残差块之后&#xff0c;搭建ResNet就会非常简单了&#xff0c;因为ResNet就是由多个残差块组成的。 残差块 残差块我们前面已经介…

Jenkins学习笔记

文章目录 一、Jenkins简介二、Jenkins的安装1. 安装前准备2. 安装Jenkins3. 启动Jenkins 三、Jenkins的配置1. 初始配置2. 全局工具配置3. 插件安装 四、Jenkins的使用1. 创建新任务2. 配置任务3. 触发构建4. 查看构建结果 五、Jenkins的高级功能1. 分布式构建2. 流水线&#x…

Android MXPlayer-v1.86.0-wushidi专业版[原团队最后一个版本]

MXPlayer 链接&#xff1a;https://pan.xunlei.com/s/VOKiDeDUxTDbJNN7yRAZjW8HA1?pwd4bzc# MX Video Player视频播放器是一款安卓最优秀的媒体播放器软件&#xff0c;它能够播放几乎每一个影片档案&#xff0c;并且具备多核心的译码能力来处理你的影片档案和字幕。多核译码…

蓝桥杯—走迷宫(BFS算法)

题目描述 给定一个NM 的网格迷宫 G。G 的每个格子要么是道路&#xff0c;要么是障碍物&#xff08;道路用 11表示&#xff0c;障碍物用 0 表示&#xff09;。 已知迷宫的入口位置为 (x1​,y1​)&#xff0c;出口位置为 (x2​,y2​)。问从入口走到出口&#xff0c;最少要走多少…

【Git】合并冲突

合并冲突 可是&#xff0c;在实际分支合并的时候&#xff0c;并不是想合并就能合并成功的&#xff0c;有时候可能会遇到代码冲突的问题。 为了演示这问题&#xff0c;创建一个新的分支 dev1 &#xff0c;并切换至目标分支&#xff0c;我们可以使用 git checkout -b dev1 一步…

NoSQL数据库系统Cassandra学习笔记

详细文档&#xff1a;我用夸克网盘分享了「noSQL.pdf」&#xff0c;点击链接即可保存。打开「夸克APP」在线查看&#xff0c;支持多种文档格式转换。 链接&#xff1a;https://pan.quark.cn/s/dfc3864807b4 参考链接&#xff1a;黑马程序员NoSQL数据库系统Cassandra全套教程&a…

解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统

目录 1. 前言 2.大模型微调概念简述 2.1. 按学习范式分类 2.2. 按参数更新范围分类 2.3. 大模型微调框架简介 3. DeepSpeek R1大模型微调实战 3.1.LLaMA-Factory基础环境安装 3.1大模型下载 3.2. 大模型训练 3.3. 大模型部署 3.4. 微调大模型融合基于SpirngBootVue2…

考研408

是否需要考研&#xff1f; 考研前期准备 目标院校 每年9月10月才会公布 考试时长3小时 数据结构 1.时间复杂度选择题计算 2.顺序表链表特点;指针、结构体语法&#xff0c;链表结点定义&#xff0c;链表头结点与头指针,常见的五种链 表&#xff0c;链表的插入删除操作;顺…

SpringCloud系列教程(十三):Sentinel流量控制

SpringCloud中的注册、发现、网关、服务调用都已经完成了&#xff0c;现在就剩下最后一部分&#xff0c;就是关于网络控制。SpringCloud Alibaba这一套中间件做的非常好&#xff0c;把平时常用的功能都集成进来了&#xff0c;而且非常简单高效。我们下一步就完成最后一块拼图Se…

Element Plus中的树组件的具体用法(持续更新!)

const defaultProps {//子树为节点对象的childrenchildren: children,//节点标签为节点对象的name属性label: name, } 属性 以下是树组件中的常用属性以及作用&#xff1a; data&#xff1a;展示的数据&#xff08;数据源&#xff09; show-checkbox&#xff1a;节点是否可…

计算机二级MS之PPT

声明&#xff1a;跟着大猫和小黑学习随便记下一些笔记供大家参考&#xff0c;二级考试之前将持续更新&#xff0c;希望大家二级都能轻轻松松过啦&#xff0c;过了二级的大神也可以在评论区留言给点建议&#xff0c;感谢大家&#xff01;&#xff01; 文章目录 考题难点1cm25px…

TypeError: Cannot convert object to primitive value

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

虚拟机 | Ubuntu图形化系统: open-vm-tools安装失败以及实现文件拖放

系列文章目录 虚拟机 | Ubuntu 安装流程以及界面太小问题解决 文章目录 系列文章目录虚拟机 | Ubuntu 安装流程以及界面太小问题解决 前言一、VMware Tools 和 open-vm-tools 是什么1、VMware Tools2、open-vm-tools 二、推荐使用open-vm-tools&#xff08;简单&#xff09;1、…

2025最新群智能优化算法:山羊优化算法(Goat Optimization Algorithm, GOA)求解23个经典函数测试集,MATLAB

一、山羊优化算法 山羊优化算法&#xff08;Goat Optimization Algorithm, GOA&#xff09;是2025年提出的一种新型生物启发式元启发式算法&#xff0c;灵感来源于山羊在恶劣和资源有限环境中的适应性行为。该算法旨在通过模拟山羊的觅食策略、移动模式和躲避寄生虫的能力&…

在【k8s】中部署Jenkins的实践指南

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Jenkins简介 2、k8s简介 3、什么在…