vue2.0结合使用 el-scrollbar 和 v-for实现一个横向滚动的元素列表,并且能够自动滚动到指定元素(开箱即用)

效果图:
在这里插入图片描述
在这里插入图片描述

代码:

<div class="gas-mode-item-body"><el-scrollbar style="width: 300px;height: 100%;" wrap-style="overflow-y:hidden"  ref="scrollbarRef"><div style="display: flex"><el-tag class="list-item" v-for="(item,index) in items" @click="changeTargetIndex(index)" :class="targetIndex==index?'active-style':''" :key="index" style="margin:0 5px 5px 0">{{ item.text }}</el-tag></div></el-scrollbar></div><div @click="jumpNum">点击跳过去</div>
 items: [{ text: 'Item 1' },{ text: 'Item 2' },{ text: 'Item 3' },{ text: 'Item 4' },{ text: 'Item 5' },{ text: 'Item 6' },{ text: 'Item 7' },{ text: 'Item 8' },{ text: 'Item 9' },// 更多项目...],targetIndex: 1, // 目标元素的索引
mounted() {this.scrollToItem(this.targetIndex);},
methods: {jumpNum(){this.targetIndex=8this.scrollToItem( this.targetIndex);},changeTargetIndex(index){this.targetIndex=indexthis.scrollToItem( this.targetIndex)},scrollToItem(index) {const itemElement = this.$refs.scrollbarRef.$el.querySelector(`.list-item:nth-child(${index + 1})`)console.log('1111',itemElement)if (itemElement) {const scrollContainer = this.$refs.scrollbarRef.$el.querySelector('.el-scrollbar__wrap');const targetScrollLeft = itemElement.offsetLeft;const currentScrollLeft = scrollContainer.scrollLeft;const duration = 500; // 动画持续时间,单位毫秒const startTime = performance.now();const animateScroll = (timestamp) => {const progress = timestamp - startTime;const easeInOutQuad = t => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;const percentage = Math.min(progress / duration, 1);const easedPercentage = easeInOutQuad(percentage);const newScrollLeft = currentScrollLeft + (targetScrollLeft - currentScrollLeft) * easedPercentage;scrollContainer.scrollLeft = newScrollLeft;if (progress < duration) {requestAnimationFrame(animateScroll);}};requestAnimationFrame(animateScroll);}},
}

css:

.gas-mode-item-body{/deep/ .el-scrollbar {.el-scrollbar__wrap {max-height: 200px; // 最大高度overflow-x: hidden; // 隐藏横向滚动栏margin-bottom: 6px !important;}}}
.list-item {min-width: 100px;padding: 10px;border: 1px solid #ccc;margin-right: 10px;
}
.active-style{background: #d43f3a;
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python Linux环境(Centos8)安装minicoda3+jupyterlab

文章目录 安装miniconda安装python环境启动 最近服务器检查&#xff0c;我下面的服务器有漏洞&#xff0c;不得已重装了&#xff0c;正好记录下怎么从零到python写代码。 安装miniconda miniconda是anconda的精简版&#xff0c;就是管理python环境的得力助手。 # 创建一个名…

7.18 学习笔记 解决分页越界问题 及分页查询

1.解决分页越界 1.1出现的问题 于是我索性把分页去掉想是不是就可以了&#xff0c;结果发现还不行 1.2解决方法 就当我找了一两个小时抓耳挠腮时&#xff0c;万幸在csdn上找到了相关的帖子&#xff0c;在此感谢一下那位大佬。 原因是我的实体类中没有构造方法&#xff0c;那…

软考系规百天备考攻略:基础阶段的三轮强化

早在今年4-5月份的时候&#xff0c;我就曾经讲过系统规划与管理师的备考建议&#xff0c;也就是先从教程学起&#xff0c;先读教程&#xff0c;而且我也说过&#xff0c;不要迷信任何培训班或者培训视频&#xff0c;任何培训班或者培训视频都不能取代你认真读至少一遍教程&…

BIOMOD2 物种分布模拟教程

原文链接&#xff1a;BIOMOD2 物种分布模拟教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247609373&idx5&sn492e7597314a5f9e358c35e4780b275f&chksmfa826dfacdf5e4ecf8ac06bdeba5469b31650bdbefbc8fb88b79c0f332714c453a4cc058d29f&token155…

Calibration相机内参数标定

1.环境依赖 本算法采用张正友相机标定法进行实现&#xff0c;内部对其进行了封装。 环境依赖为 ubuntu20.04 opencv4.2.0 yaml-cpp yaml-cpp安装方式&#xff1a; &#xff08;1&#xff09;git clone https://github.com/jbeder/yaml-cpp.git #将yaml-cpp下载至本地 &a…

15- 微分方程

对三角函数不敏感

模块化沙箱:解锁数据防泄密的终极密码

在这个数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一。然而&#xff0c;数据泄露的威胁如同暗夜中的幽灵&#xff0c;随时可能侵袭企业的信息安全防线。面对日益复杂的内外部风险&#xff0c;企业亟需一种既高效又灵活的安全解决方案&#xff0c;来保护其核心数据不…

专业PDF编辑工具:Acrobat Pro DC 2024.002.20933绿色版,提升你的工作效率!

软件介绍 Adobe Acrobat Pro DC 2024绿色便携版是一款功能强大的PDF编辑和转换软件&#xff0c;由Adobe公司推出。它是Acrobat XI系列的后续产品&#xff0c;提供了全新的用户界面和增强功能。用户可以借助这款软件将纸质文件转换为可编辑的电子文件&#xff0c;便于传输、签署…

透视矫正插值

https://www.cnblogs.com/straywriter/articles/15889273.html https://www.comp.nus.edu.sg/~lowkl/publications/lowk_persp_interp_techrep.pdf https://8.136.115.103/perspective-correct-interpolation%E9%80%8F%E8%A7%86%E6%A0%A1%E6%AD%A3%E6%8F%92%E5%80%BC/ 透视矫正…

Postfix+Dovecot+Roundcube开源邮件系统搭建系列4:Dovecot安装配置

1. Dovecot安装 安装Dovecot&#xff1a; yum -y install dovecot dovecot-mysql 启动服务并设置开机自启动&#xff1a; systemctl start dovecot systemctl enable dovecot 2. Dovecot配置 Dovecot配置文件目录&#xff1a;/etc/dovecot&#xff0c;在该目录中dovecot.…

【内网穿透】如何本地搭建Whisper语音识别模型并配置公网地址

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

视频联网共享平台LntonCVS视频监控汇聚平台视频云解决方案

LntonCVS流媒体平台是一款遵循国家GB28181标准协议的先进视频监控与云服务平台。该平台设计独特&#xff0c;能够同时接入并处理多路设备的视频流&#xff0c;支持包括RTSP、RTMP、FLV、HLS、WebRTC在内的多种视频流格式的分发。其功能丰富多样&#xff0c;涵盖了视频直播监控、…

基于STM32的全栈嵌入式解决方案:LoRa、MQTT和阿里云IoT平台构建的智慧农业监控系统(附代码示例)

摘要&#xff1a; 随着科技的进步&#xff0c;物联网技术在农业领域的应用越来越广泛。本文介绍一个基于物联网的智慧农业监控系统&#xff0c;该系统可以实时监测农田的环境数据&#xff0c;并根据数据自动控制灌溉、施肥等操作&#xff0c;提高农业生产效率。 关键词&#x…

微分段Microsegmentation简介

目录 微分段Microsegmentation简介什么是微分段&#xff1f;微分段的防范措施微分段的防护层级 基于网络的微分段微分段基本工作机制微分段的角色VxLAN的额外字段 业务链分组与传输策略场景1&#xff1a;三层报文本地转发场景场景2&#xff1a;三层报文跨设备转发场景 微分段的…

【深度学习】PyTorch框架(5):Transformer和多注意力机制

1、引言 在本文中&#xff0c;我们将探讨近两年来最具影响力的模型架构之一——Transformer模型。自从2017年Vaswani等人发表的论文《注意力是你所需要的全部》以来&#xff0c;Transformer架构在多个领域持续刷新着性能记录&#xff0c;尤其是在自然语言处理&#xff08;NLP&…

python入门课程Pro(1)--数据结构及判断

数据结构及判断 第1课 复杂的多向选择1.if-elif-else2.if嵌套3.练习题&#xff08;1&#xff09;大招来了&#xff08;2&#xff09;奇数还是偶数&#xff08;3&#xff09;简洁代码 第2课 数据与判断小结1.变量2.格式化输出3.逻辑运算-或与非4.判断条件5.练习题&#xff08;1&…

LNK1342中文报错乱码

如图所示&#xff0c;因编译中存在中文而报错“常量中有换行符”或者直接报错LNK1342且中文报错乱码 无论是使用UTF-8还是GBK编译都会报错&#xff0c;并且修改控制台的格式936或65001也无法解决 解决办法&#xff1a;检查你的注册表编辑器 以下位置&#xff0c;如果安装了VS…

Java无模版导出Excel 0基础教程

0 写在前面 经常写数据导出到EXCEL&#xff0c;没有模板的情况下使用POI技术。以此作为记录&#xff0c;以后方便使用。 1 依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</v…

C# 各版本语法新功能汇总

C# 8.0 以后 官网 C# 7.3 》》in C# 7.2 》》 命名参数、具名参数 》》》 条件 ref 表达式 C# 7.1 》》 default 运算符 default 在C#7.1中得到了改进&#xff0c;不再需要default&#xff08;T&#xff09;了 //变量赋值C#7.0 var s "字符串"; s default(s…

鸿蒙基本工程目录

工程级目录 AppScope 中存放应用全局所需要的资源文件。entry 是应用的主模块&#xff0c;存放 HarmonyOS 应用的代码、资源等。oh_modules 是工程的依赖包&#xff0c;存放工程依赖的源文件。build-profile.json5 是工程级配置信息&#xff0c;包括签名、产品配置等。hvigorf…