vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法

问题描述:vue是单页面应用。导致路由切换之后,之前的滚动距离会一直存在,页面没有到顶部。

网上大部分的解决方案是利用路由的afterEach方法解决,如下所示,

router.afterEach((to,from,next) => {
  window.scrollTo(0,0);
});

这样解决有如下几个问题
1.scrollTo方法部分在手机上的部分浏览器不支持,也就是不兼容。
2.用scrollTo方法会在苹果手机浏览器上会产生返回白屏问题(vue项目在IOS中多次返回会出现一半白屏挡住页面)网上有很多解决方案,我就不一 一叙述了。

最后总结下来还是利用vue-router自带的滚动行为解决 ,官方网址https://router.vuejs.org/zh/guide/advanced/scroll-behavior.html

在定义路由的new Route里添加scrollBehavior方法就可以了

scrollBehavior (to, from, savedPosition) {
  if (savedPosition) {
    return savedPosition
  } else {
    return { x: 0, y: 0 }
  }
}

截图如下:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值