Vue3+Typescript+setup / Vue2使用scrollIntoView()实现锚点跳转指定列表

在标签上添加ref属性来引用DOM元素,

Vue2中使用$refs来获取该DOM元素并调用scrollIntoView()方法。

使用ref="yearDiv"在每个年份的div元素上添加了一个引用。然后,在yearClick方法中,我们通过this.$refs.yearDiv[year]来获取对应年份的div元素,并调用scrollIntoView()方法来将该元素滚动到可见区域。方法如下:

yearClick(year) {

this.typeStyle = year;

const yearDiv = this.$refs.yearDiv[year];

yearDiv.scrollIntoView({ behavior: 'smooth' });

},

Vue3和Typescript实现锚点跳转的示例代码:

需要在Vue组件中更新HTML模板中添加data-year属性,该属性的值是对应的年份,使用document.querySelector函数来获取带有相应data-year属性值的div元素,并将其滚动到可见区域。

:data-year="year"

ref="yearDivs 

:class="{ rightActive: typeStyle === year }" //悬浮高亮

  <div class="year-time"><ul class="yearList" ref="yearList"><li v-for="year in years" :key="year" :class="{ active: typeStyle === year }" @mouseover="yearClick(year)">{{ year }}</li></ul><ul class="right-content"><div v-for="year in years" :key="year" :class="{ rightActive: typeStyle === year }" :data-year="year" ref="yearDiv"><li v-for="item in contents[year]">{{ item }}</li></div></ul></div>

// 年份列表
const years = ['2019', '2020', '2021', '2022', '2023']
// 每个年份对应的内容
const contents: Record<string, string[]> = {'2019': ['06月 一 ....'],'2020': ['03月 一 AI......'],'2021': ['03月 一 深入........'],'2022': ['06月 一 建设布..........'],'2023': ['05月 一 上线....','08月 一 启动安全....','09月 一 推出....']
}const typeStyle = ref('2019')
const yearClick = (year: string) => {typeStyle.value = year;const yearDiv = document.querySelector(`[data-year="${year}"]`) as HTMLElement;yearDiv?.scrollIntoView({ behavior: 'smooth' });console.log(yearDiv, 'yearDiv');};

css样式

    .year-time {display: flex;padding-top: 30px;padding-left: 80px;justify-content: space-between;ul {list-style-type: none;margin: 0;padding: 0;}.yearList {width: 100px;li {width: 60px;height: 60px;line-height: 60px;text-align: center;font-size: 16px;font-weight: bold;border-radius: 50%;cursor: pointer;transition: all 0.3s;}}.right-content {width: calc(100% - 100px);height: 400px;overflow: auto;padding-left: 80px;padding-right: 20px;scrollbar-width: thin;scrollbar-color: #bbb transparent;font-size: 14px;}.right-content::-webkit-scrollbar {width: 6px;}.right-content::-webkit-scrollbar-track {background-color: transparent;}.right-content::-webkit-scrollbar-thumb {background-color: #bbb;border-radius: 3px;}.right-content li {margin-bottom: 20px;}.active {background-color: #007aff;color: #fff;}.rightActive {font-weight: 700;font-size: 16px;color: #4391f1;}}

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

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

相关文章

使用Go语言采集1688网站数据对比商品价格

目录 引言 一、数据采集原理 二、数据采集流程 三、数据采集代码实现 四、数据分析与比较 五、注意事项 六、结论 引言 随着电子商务的快速发展&#xff0c;越来越多的消费者开始通过在线平台购买商品。在众多电商平台中&#xff0c;1688作为中国最大的批发交易平台&am…

CMake入门教程【核心篇】查找包(find_package)

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「本文的内容」&#xff1a;CMake入门教程 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 1.使用方法1.1基本用…

【python_将列表整合成文本】

python_将列表整合成文本 # -*- coding: utf-8 -*-data [[指令卡主, 2023-12-25, 经贸有限公司, 孙悟空], [使用了屏幕保护之后&#xff0c;元素找不到了, 2023-12-25, 科技有限公司, 许三多], [操作用友的时候&#xff0c;找不到元素, 2024-01-02, 食品科技有限公司, 小张],…

BUG汇总

20240103 通用&#xff0c;驼峰命名法&#xff0c;mybatis。 mybatis入门程序中&#xff0c; // 获取对象的顺序为&#xff1a;SqlSessionFactoryBuild-》SqlSessionFactory-》SqlSessionSqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();I…

js中的事件传递

事件传递分为两个阶段&#xff0c;一是 事件捕获&#xff0c;二是 事件冒泡。分别对应下图1~5和6-10&#xff0c;每次触发的事件从window开始向下传播&#xff0c;一直到叶子节点&#xff0c;再往回传播。每个节点都允许添加监听器&#xff0c;浏览器在事件传播过程中一旦遇到监…

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 概述

1、 Hadoop 是什么 &#xff08;1&#xff09;Hadoop是一个由Apache基金会所开发的分布式系统基础架构 &#xff08;2&#xff09;主要解决海量数据的存储和海量数据的分析计算问题 &#xff08;3&#xff09;广义上来说&#xff0c;Hadoop通常是指一个更广泛的概念——Hadoop生…

keras人工智能框架 MNIST 数据集 随机展示

阅读本文之前&#xff0c;请先参考--------win10搭建keras深度学习框架 安装运行环境 使用Python绘图库Matplotlib随机输出mnist数据集的几个图片&#xff1a;代码见下图&#xff1a; 在sublimeText中 使用ctrlB运行代码&#xff0c;结果如下图&#xff1a;

c++ / day06

1. 利用模板类完成顺序表(两天时间&#xff0c;今天至少写出大致框架) 代码 //implement template in sqlist #include <iostream> #include <cstring>#define MAXSIZE 100using namespace std;template <typename T> class Sqlist {unsigned int len 0;T…

GaussDB数据库使用COPY命令导数

目录 一、前言 二、GaussDB数据库使用COPY命令导数语法 1、语法COPY FROM 2、语法COPY TO 3、特别说明及参数示意 三、GaussDB数据库使用COPY命令导数示例 1、操作步骤 2、准备工作&#xff08;示例&#xff09; 3、把一个表的数据拷贝到一个文件&#xff08;示例&…

kbdnecnt.DLL文件缺失,软件或游戏无法启动运行,怎样快速修复?

不少人都在问“kbdnecnt.DLL文件”是什么&#xff1f;为什么电脑总是报错提示说“kbdnecnt.DLL文件缺失&#xff0c;软件无法启动”&#xff1f; 首先&#xff0c;先来了解“kbdnecnt.DLL文件”是什么&#xff1f; kbdnecnt.DLL是Windows操作系统中的一个动态链接库文件&#…

Spark二、Spark技术栈之Spark Core

Spark Core spark核心&#xff1a;包括RDD、RDD算子、RDD的持久化/缓存、累加器和广播变量 学习链接&#xff1a;https://mp.weixin.qq.com/s/caCk3mM5iXy0FaXCLkDwYQ 一、 RDD 1.1 为什么要有RDD 在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘中&#xff0c;…

STL——string详解

目录 &#x1f4a1;介绍 &#x1f4a1;string的基本操作 &#x1f4a1;string的构造函数 &#x1f4a1;string赋值操作 &#x1f4a1;string字符串拼接 &#x1f4a1;string的查找和替换 &#x1f4a1;string字符串比较 &#x1f4a1;string字符存取 &#x1f4a1;str…

alibabaCloud学习笔记01(小滴课堂)

微服务架构常见的核心组件 讲解业务微服务架构常见解决方案 讲解AlibabaCloud核心组件介绍 创建数据库。 建表&#xff1a; 添加数据&#xff1a; 再建个用户库&#xff1a; 建表&#xff1a; 插入数据&#xff1a; 创建订单库&#xff1a; 建表&#xff1a; 创建项目&#x…

大数据时代的WEB运维高级架构师,Web系统运维工程师的实战成长之路

一、教程描述 本套WEB架构师教程&#xff0c;大小30.61G&#xff0c;共有183个文件。 二、教程目录 01-Web架构之单机时代&#xff08;共7课时&#xff09; 02-Web架构之集群时代&#xff08;共9课时&#xff09; 03-Web架构之DNS&#xff08;共6课时&#xff09; 04-Web…

常见的共轭先验分布

经常会遇到后验分布不能求解的问题&#xff0c;对于这个问题可以应用共轭先验分布解决&#xff0c;这些先验分布具有比较好的特征&#xff0c;能够使得出的后验分布和先验分布具有相同的分布族。如果一个具有参数属于分布的先验分布&#xff0c;则生成的后验分布也属于相同的分…

【InnoDB数据存储结构】第2章节:InnoDB行格式

目录结构 之前整篇文章太长&#xff0c;阅读体验不好&#xff0c;将其拆分为几个子篇章。 本篇章讲解 InnoDB 行格式。 InnoDB 行格式 InnoDB 一行记录是如何存储的&#xff1f; 这个问题是本文的重点&#xff0c;也是面试中经常问到的问题&#xff0c;所以就引出了下文的 …

【flink番外篇】9、Flink Table API 支持的操作示例(14)- 时态表的join(java版本)

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

Unity 基于UDP实现本地时间与网络时间校验 防客户端修改日期作弊

新建一个Unity GameObject 挂上NTPComponent脚本 时间校验 源码 using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.Networking; using System.Text; using System.Net.Sockets; using System.Net; using Sys…

c# OpenCvSharp Cv2.Threshold()和Cv2.AdaptiveThreshold参数说明

一、 Cv2.Threshold()二值化的函数参数说明 Cv2.Threshold()是一个用于图像二值化的函数。具体来说&#xff0c;它会将图像中的每一个像素的灰度值与一个阈值进行比较&#xff0c;大于该阈值的像素会被赋值为最大灰度值(即 255)&#xff0c;小于该阈值的像素会被赋值为最小灰度…

Apollo感知模块 :传感器| 目标监测| 障碍物识别 | 模型管理

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 粉丝福利活动 ✅参与方式&#xff1a;通过连接报名观看课程&#xff0c;即可免费获取精美周边 ⛳️活动链接&#xf…