优化_首页-滚动条位置

目标:

  • 切换首页和我的页面

  • 首页滚动条位置需要恢复

 

 

 keep-alive不会缓存滚动条的位置的!!

1.路由对象/home,上添加meta额外的信息

知识点:组件被缓存,切走了就会失去激活生命周期方法触发 deactivated

          无被缓存,切走了,destroyed摧毁生命周期方法触发

  因为home组件被keep-alive缓存,当切换出去了该页面只会被保存html和css js,而不会保存滚动位置

  原因:切换到我的页面,页面高度不够,没有滚动条(此滚动条为整个网页的),滚动位置会回到顶部,所以切换到首页,,滚动条还在顶部

  解决:首页失焦(被切换时),在他的路由对象meta中保存滚动位置

 {
        path: 'home',
        name: 'home',
        component: () => import(/* webpackChunkName:"home" */'@/views/home'),
        meta: { scrollT: 0 }
      }

 2.给window绑定滚动事件

 activated () {
    // 原生js通过window.onscroll监听
    window.addEventListener('scroll', this.scrollFn) // 监听滚动事件

    // 当从我的切换到首页时(激活时),将滚动条复位
    document.documentElement.scrollTop = this.$route.meta.scrollT
  },
  deactivated () {
    console.log(this.$route)
    // 给全局dom绑定事件(这里是window,所有的组件共用一个window)一定要记得在摧毁
    window.removeEventListener('scroll', this.scrollFn)
  }
methods:{
    scrollFn () {
      // 每个页面都有自己的路由规则
      this.$route.meta.scrollT = document.documentElement.scrollTop
    },
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值