vue中记录滚动条位置的两种方法

作者:爱敲码的老余 时间:2024-04-27 15:59:33 

1、方法一

在点击的时候记录滚动条位置,存入本地
再次进入该路由读取滚动跳位置

1、1 跳转时路由存入scroll 如果要有多个页面,可以把名称也存进去,这里默认一个页面

methods: {
     go() {
       console.log(document.documentElement.scrollTop)
       localStorage.setItem("scroll", document.documentElement.scrollTop)
       this.$router.push({path: '/'})
     }
   }

1、2 读取scroll位置 再次进入该路由时从本地录取scroll位置

利用scrollBehavior ,在router/index.js中,配置路由中的scrollBehaviors事件

const router = new VueRouter({
 mode: 'hash',
 routes,
 scrollBehavior(to, from){
   if(to.name==='fatherSlot'){ //name为路由名字
     return {x:0, y: parseInt(localStorage.getItem('scroll'))}//读取本地的scroll
   }
   console.log("to",to,"from",from)
 }
})

2、方法二

利用vuekeep-alive , 使用缓存机制来记录滚动条位置
但是有个缺点,页面刷新后就不记录了,但是简单高效

2、1 配置需要缓存的路由 缓存pageA,pageB,里面代码都一样,如演示图一样。pageA,pageC为组件的名字.

html

<keep-alive :include="['pageA','pageC']">
     <router-view/>
   </keep-alive>

2、2 在路由内记录滚动位置

javascript

data() {
     return {
       curScrollTop: 0 //记录滚动条位置对象
     }
   },
   //此钩子函数会反复触发,是keep-alive特有的钩子函数,取
   activated() {
     document.documentElement.scrollTop = this.curScrollTop || 0
   },
   //路由离开时的钩子函数,存
   beforeRouteLeave (to, from, next) {
     this.curScrollTop = document.documentElement.scrollTop || 0
     next()
   },

来源:https://blog.csdn.net/www61621/article/details/127648707

标签:vue,滚动条,位置
0
投稿

猜你喜欢

  • 从go语言中找&和*区别详解

    2024-04-30 10:04:50
  • Oracle逗号分隔列转行实现方法

    2024-01-14 20:04:37
  • Linux下安装mysql的教程详解

    2024-01-20 03:24:37
  • MySQL Community Server 8.0.11安装配置方法图文教程

    2024-01-26 06:02:45
  • python判断字符串是否是json格式方法分享

    2023-01-02 20:50:37
  • Python如何爬取b站热门视频并导入Excel

    2023-06-20 23:27:44
  • js注入 黑客之路必备!

    2024-04-17 10:23:44
  • IE对CSS样式表的限制和解决方案

    2008-04-28 12:27:00
  • javascript 缓冲效果实现代码 推荐

    2024-04-29 13:36:08
  • pygame实现俄罗斯方块游戏(基础篇3)

    2022-10-10 10:45:54
  • python实现发送邮件及附件功能

    2023-12-30 23:27:04
  • mysql从执行.sql文件时处理换行的问题

    2009-09-06 11:46:00
  • mysql中group by与having合用注意事项分享

    2024-01-15 02:24:55
  • Vue组件通信方法案例总结

    2023-07-02 16:51:58
  • 网站中美好的细节

    2011-07-13 18:43:07
  • [新手必看]15个asp编程常见问题解答

    2007-08-22 13:07:00
  • 对python读取CT医学图像的实例详解

    2023-12-29 12:36:37
  • 浅谈pytorch中stack和cat的及to_tensor的坑

    2022-12-14 11:53:23
  • 使用Dreamweaver MX表格排序功能

    2010-07-13 12:08:00
  • mysql中全连接full join...on...的用法说明

    2024-01-13 19:44:22
  • asp之家 网络编程 m.aspxhome.com