vue3 记录页面滚动条的位置,并在切换路由时存储或者取消

需求,当页面内容超出了浏览器可是屏幕的高度时,页面会出现滚动条。当我们滚动到某个位置时,操作了其他事件或者跳转了路由,再次回来时,希望还在当时滚动的位置。那我们就进行一下操作。
我是利用了会话存储 sessionStorage 记得清除。
注意我们需要给元素的最外层父级元素设置 。

 overflow-y: auto; // scroll 都可以,height: 100%;

思路
1.页面首先要是缓存的组件实例 keep-alive
2.用onActivated 才能将滚动位置 缓存起来
3.每次进入都要将存储的位置重新赋值给页面
4.路由守卫 beforeRouteLeave路由离开前记录当前的位置
我这里获取的是元素本身的滚动条事件,可不是 window的滚动条事件。
在这里插入图片描述
利用 @scroll=“handleScroll” 事件进行操, 定义的ref 获取dom。
ref=“scrollContainer”

import { onBeforeRouteLeave } from 'vue-router'  记得用啥引入啥。const scrollContainer = ref()
let scrollPosition = ref(0)
const handleScroll = (event: any) => {// 滚动事件触发时,这里的代码会被执行scrollPosition.value = event.target.scrollTop
}
// 组件挂载完成后执行的函数;
onMounted(() => {getScrollY()
})
const getScrollY = () => {// 确保sessionStorage有对应的滚动位置数据const scrollPositionKey = 'scrollPosition'if (sessionStorage.getItem(scrollPositionKey)) {scrollContainer?.value.scrollTo(0, scrollPosition.value)}
}
//  被包含在 <keep-alive> 中的组件,会多出两个生命周期钩子函数,被激活时执行;
onActivated(() => {getScrollY()
})
// 组件卸载完成后执行的函数;
onUnmounted(() => {sessionStorage.removeItem('scrollPosition')
})
// 守卫在当前路由离开时触发 前往了下个路由
onBeforeRouteLeave(() => {sessionStorage.setItem('scrollPosition', scrollPosition.value.toString())
})

完成。

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

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

相关文章

工业互联网和云计算有关联吗

工业互联网和云计算有关联吗&#xff1f;是的&#xff0c;工业互联网和云计算之间存在紧密的关联。工业互联网是指利用物联网、云计算、大数据分析等技术手段&#xff0c;将传统工业领域与互联网技术相结合&#xff0c;实现设备、工厂和企业之间的连接和数据交互。 工业互联网…

Linux华为云Hadoop配置环境

手工搭建Hadoop环境&#xff08;Linux&#xff09;_弹性云服务器 ECS_最佳实践 (huaweicloud.com)https://support.huaweicloud.com/bestpractice-ecs/zh-cn_topic_0000001698668477.html?localezh-cn#ZH-CN_TOPIC_0000001698668477__li49001945163110跟着傻瓜式CV即可。 气死…

SSH常见运维总结

1 -bash: ssh: command not found 解决办法&#xff1a;"yum install &#xff0d;y openssh-server openssh-clinets" 2 ssh登录时提示&#xff1a;Read from socket failed: Connection reset by peer. 原因&#xff1a;/etc/ssh/下没有ssh*key*文件 解决&…

目标检测:数据集划分 XML数据集转YOLO标签

文章目录 1、前言&#xff1a;2、生成对应的类名3、xml转为yolo的label形式4、优化代码5、划分数据集6、画目录树7、目标检测系列文章 1、前言&#xff1a; 本文演示如何划分数据集&#xff0c;以及将VOC标注的xml数据转为YOLO标注的txt格式&#xff0c;且生成classes的txt文件…

Ubuntu 大压缩文件解压工具

Ubuntu 大压缩文件解压工具 任务解决 任务 需要解压一个百度网盘上下载的压缩文件&#xff0c;zip格式。 直接右键’提取到此处’&#xff0c;会报错&#xff1a;empty archive 用unzip指令&#xff0c;会报错&#xff1a; Archive: 实验.zip warning [实验.zip]: 12540984…

李笑来-财富自由之路【边读边记】2

2024-04-01 23:50 处理完杂事&#xff0c;已经快12点了&#xff0c;但还是想读完这本书。 昨天晚上看完前8章&#xff0c;对李笑来这个同志有了初步的判断&#xff0c;然后不由得去抖音搜了下这个人的资料&#xff0c;果然关于炒币狂转上百亿一下子就出来了&#xff0c;还有就是…

Nginx 日志输出配置json格式

nginx日志输出配置json格式 nginx服务器日志相关指令主要有两条&#xff1a; (1) 一条是log_format&#xff0c;用来设置日志格式 (2) 另外一条是access_log&#xff0c;用来指定日志文件的存放路径、格式和缓存大小。 log_format指令用来设置日志的记录格式&#xff0c;它的语…

Javaweb的学习22_JavaScript简介

JavaScript 简介&#xff1a; 概念&#xff1a;一门客户端脚本语言 运行在客户端浏览器中&#xff1b;每一个浏览器都有JavaScript的解析引擎 脚本语言&#xff1a;不需要编译&#xff0c;直接就可以被浏览器解析执行 功能&#xff1a; 可以来增强用户和html页面的交互过程&…

iOS移动应用实时查看运行日志的最佳实践

目录 一、设备连接 二、使用克魔助手查看日志 三、过滤我们自己App的日志 &#x1f4dd; 摘要&#xff1a; 本文介绍了如何在iOS iPhone设备上实时查看输出在console控制台的日志。通过克魔助手工具&#xff0c;我们可以连接手机并方便地筛选我们自己App的日志。 &#x1f4…

目标检测——工业安全生产环境违规使用手机的识别

一、重要性及意义 首先&#xff0c;工业安全生产环境涉及到许多复杂的工艺和设备&#xff0c;这些设备和工艺往往需要高精度的操作和严格的监管。如果员工在生产过程中违规使用手机&#xff0c;不仅可能分散其注意力&#xff0c;降低工作效率&#xff0c;更可能因操作失误导致…

云原生技术赋能AI绘图:Stable Diffusion在腾讯云的部署与应用新篇章

摘要 随着信息技术的飞速发展和数字化转型的深入推进&#xff0c;云原生架构已成为企业数字化转型的重要基石。Docker容器、Serverless和微服务等技术作为云原生的核心组成部分&#xff0c;正在不断推动着企业应用架构的革新与升级。本文旨在总结近期在云原生实践、容器技术、…

linux三件客之awk全解

01.awk awk:编程语言 GNU/awk 作用&#xff1a;1.取行2.取列3.模糊过滤4.数据统计&#xff0c;数据运算5.支持for循环 if判断 数组……6.格式化输出 sed后向引用 语法结构&#xff1a;awk 模式 file # 模式是找谁 指定行 指定列 模糊查找 不加任何动作awk 模式&#xff08…

rust并行计算库Rayon

rust并行计算库Rayon rust并行计算库Rayon什么是并行计算Rayon工作窃取算法第一个Rayon应用Rayon线程池Rayon任务调度Rayon并行迭代Rayon并行计算模式map-reduceRayon并行计算模式filter-mapRayon并行计算模式scanRayon并行策略Rayon并行策略静态分块Rayon并行策略动态分块Ray…

工作常用Linux命令记录

工作常用Linux命令记录 一、基础部分1、光标快速移动2、杀死指定端口3、查看磁盘占用4、CPU占用5、JVM命令 二、日志部分1、固定打印日志2、追加打印日志3、查询关键字周围4、浏览日志 一、基础部分 1、光标快速移动 mac下 移动到上一个单词&#xff1a;option➡️ 移动到下一…

混合现实(MR)开发工具

混合现实&#xff08;MR&#xff09;开发工具是一系列软件和框架&#xff0c;它们使得开发者能够创建和优化能够在虚拟与现实世界之间无缝交互的应用程序。以下是一些在MR领域内广泛使用的开发工具。 1.Microsoft Mixed Reality Toolkit (MRTK) MRTK是一个跨平台的工具包&…

【操作系统】FCFS、SJF、HRRN、RR、EDF、LLF调度算法及python实现代码

文章目录 一、先来先服务调度算法&#xff08;FCFS&#xff09; 二、短作业优先调度算法&#xff08;SJF&#xff09; 三、高响应比优先调度算法&#xff08;HRRN&#xff09; 四、轮转调度算法&#xff08;RR&#xff09; 五、最早截至时间优先算法&#xff08;EDF&#…

Mysql故障解析

目录 一、Mysql单实例故障排查 1.故障一 2.故障二 3.故障三 4.故障四 5.故障五 6.故障六 7.故障七 8.故障八 二、Mysql主从故障排查 1.故障一 2.故障二 3.故障三 三、Mysql优化 1.硬件方面 &#xff08;1&#xff09;关于CPU &#xff08;2&#xff09;关于内…

Autodesk 3DS MAX 2025 (3Dmax2025)激活版

3ds Max 2025 是一款功能强大的3D建模、动画和渲染软件&#xff0c;广泛应用于建筑、游戏开发、影视制作等多个领域。在材质设定和描影、3D彩现以及动画和效果方面&#xff0c;3ds Max 2025也提供了丰富的增强功能&#xff0c;以满足用户在不同制作需求中的要求。 3ds Max 2025…

Docker——Dockerfile构建MySQL并初始化数据

目录 Dockerfile构建MySQL编写Dockerfile构建和运行Docker容器 Dockerfile构建MySQL 编写Dockerfile # 使用MySQL5.7镜像作为基础 FROM mysql:5.7# 复制初始化SQL脚本到容器中 COPY *.sql /docker-entrypoint-initdb.d/# 设置环境变量&#xff08;root密码&#xff09; ENV M…

几个好用的audio数字信号处理的开源地址marks(持续更新中)

这里写目录标题 Sound Open FirmwareMUSICDSPFFMPEGCMSIS DSP安卓oboe参考 Sound Open Firmware 根据此SOF Project documentation介绍&#xff0c;SOF项目是针对声音处理的开源固件平台&#xff0c; BSD 3-clause license协议, firmware部分使用者有比较大的自由度。 MUSICD…