前端:横向滚动条,拖动进行左右滚动(含隐藏滚动条)

ops/2024/10/22 11:41:53/

效果:

代码:

单独封装一个addMouseEvent.ts文件

// 添加鼠标移动事件export const addMouseEvent = (el: string) => {let container = document.querySelector(el) as HTMLDivElement;let isMouseDown = false;let startX = 0;let scrollLeft = 0;// 鼠标按下事件const onMouseDown = (e: MouseEvent) => {isMouseDown = true;startX = e.pageX - container.offsetLeft;scrollLeft = container.scrollLeft;};// 鼠标移动事件const onMouseMove = (e: MouseEvent) => {if (!isMouseDown) return;e.preventDefault();let x = e.pageX - container.offsetLeft;let walk = (x - startX) * 1; // 调整滚动速度container.scrollLeft = scrollLeft - walk;};// 鼠标抬起事件const onMouseUp = () => {isMouseDown = false;};// 鼠标离开事件const onMouseLeave = () => {isMouseDown = false;};container.addEventListener("mousedown", function (e) {onMouseDown(e);});container.addEventListener("mouseleave", function () {onMouseLeave();});container.addEventListener("mouseup", function () {onMouseUp();});container.addEventListener("mousemove", function (e) {onMouseMove(e);});const removeEventListeners = () => {container.removeEventListener("mousedown", onMouseDown);container.removeEventListener("mouseleave", onMouseLeave);container.removeEventListener("mouseup", onMouseUp);container.removeEventListener("mousemove", onMouseMove);};return removeEventListeners;
};

在页面中使用:

.device-list是要执行滑动的dom元素

onMounted(() => {nextTick(() => {mouseLeaveEvent.value = addMouseEvent(".device-list");});
});
onBeforeUnmount(() => {mouseLeaveEvent.value && mouseLeaveEvent.value();
});

隐藏横向滚动条:

::-webkit-scrollbar {/* 隐藏Webkit浏览器的滚动条 */display: none;
}


http://www.ppmy.cn/ops/45511.html

相关文章

算法-从归并排序到归并分治

文章目录 前言介绍1 . 简单的归并排序2 . 数组的最小和问题3 . 逆序数对问题4 . 翻转对数量的计算 前言介绍 归并排序是Merge sort)是一种有效、稳定的排序算法,它采用了分治法(Divide and Conquer)的典型应用,何为分治 ? 即把多…

Docker搭建FRP内网穿透服务器

使用Docker搭建一个frp内网穿透 在现代网络环境中,由于防火墙和NAT等原因,内网设备无法直接被外网访问。FRP (Fast Reverse Proxy) 是一款非常流行的内网穿透工具,它能够帮助我们将内网服务暴露给外网。本文将介绍如何在Linux服务器上使用Do…

npm镜像源管理、nvm安装多版本node异常处理

查看当前使用的镜像源 npm config get registry --locationglobal 设置使用官方源 npm config set registry https://registry.npmjs.org/ --locationglobal 设置淘宝镜像源 npm config set registry https://registry.npm.taobao.org/ --locationglobal 需要更改淘宝镜像源地址…

查看redis内存使用情况及总内存量

import redis# 配置 Redis 主机和端口 redis_hosts [{"域名或ip1", "port": "端口号1"},{"域名或ip2", "port": "端口号2"},] all_used_port[端口号1,端口号2] # 转换字节为GB def bytes_to_gb(bytes_value):re…

Oracle数据库之事务(十四)

在Oracle数据库中,事务是工作的逻辑单元,用于确保数据的一致性和完整性。以下是对Oracle事务的详细解释: 1. 定义 事务:在数据库中,事务是由一个或多个SQL语句组成的逻辑单元,这些语句共同完成一组相关的…

人类行为验证处理方案 —— 脱离UI组件库实现登录、注册+表单校验

目录 01: 构建登录模块基础UI结构 02: 表单校验实现原理与方案分析 表单校验的实现原理 自定义表单校验方案分析 文章中的方案实现 03: 基于 vee-validate 实现普适的表单校验 04: 什么是人类行为验证?它的目的、实现原理、构建方案分别是什么&am…

vue实现左侧拖拽拉伸,展开收起

需求&#xff1a;1.左侧是个树形结构&#xff0c;有的文字过长展示不全&#xff0c;想通过拖拽显示全部的数据 2.展开收起 实现图中效果 <div class"catalog-drag"><svg t"1687228434888" class"icon" viewBox"0 0 1…

【香橙派 AIpro】新手保姆级开箱教程:Linux镜像+vscode远程连接

香橙派 AIpro 开发板 AI 应用部署测评 写在最前面一、开发板概述官方资料试用印象适用场景 二、详细开发前准备步骤1. 环境准备2. 环境搭建3. vscode安装ssh插件4. 香橙派 AIpro 添加连接配置5. 连接香橙派 AIpro6. SSH配置 二、详细开发步骤1. 登录 juypter lab2. 样例运行3. …