vue切换页面(路由)时如何保持滚动条回到顶部

 更新时间:2022年12月06日 14:16:55   作者:牛先森家的牛奶  
这篇文章主要介绍了vue 切换页面(路由)时如何保持滚动条回到顶部问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue切换“页面”(路由)时保持滚动条回到顶部

vue项目做pc端的时候,发现在两个页面切换时 滚动条没有回到顶部而是保持原先的位置;

这是由于vue是单页面应用,只是更换了路由内容,还在当前页面滚动条是不会回到顶部的。

解决办法是在切换路由的时候,将滚动区域的滚动条复位为0。

  // 使用 watch 监听$router的变化,
  watch: {
    '$route': function(to, from) {
     document.body.scrollTop = 0
      document.documentElement.scrollTop = 0
    }
  }

当然看页面的布局,可能滚动区域并不是document的scrollTop为0 能有效果,和项目里面的布局滚动区域有关,下面是项目里面的滚动区域 app-main ;

<template>
  <div id="app">
    <router-view />
    <!-- 骨架屏,在菜单组件触发隐藏,目前没想到又好的方式处理 -->
    <common-skeleton v-if="showSkeleton" />
  </div>
</template>
<script>
import CommonSkeleton from './components/Skeleton/common'

export default {
  name: 'App',
  components: {
    CommonSkeleton
  },
  computed: {
    showSkeleton() {
      return this.$store.state.settings.showSkeleton
    }
  },
  watch: {
    '$route'(val) {
      if (!document.getElementsByClassName('app-main') || !document.getElementsByClassName('app-main').length) {
        return
      }
      document.getElementsByClassName('app-main')[0].scrollTop = 0
    }
  }
}
</script>
<style lang="scss" scoped>
@import "~@/styles/mixin.scss";
@import "~@/styles/variables.scss";
#app {
  width: 100%;
  height: 100%;
  @include clearfix;
}
</style>

vue页面跳转后,滚动条不在顶部的解决

问题描述

vue在将页面滚动到页面中部或者底部(反正不在顶部),再进行页面跳转后,新页面的滚动条还处于上一个页面的位置,并没有更新到页面顶部

解决方法

在全局路由钩子里面将页面滚动到页面顶部

router.beforeEach((to, from, next) => {
    document.body.scrollTop = 0;
    document.documentElement.scrollTop = 0;
 
    // 兼容IE
    window.scrollTo(0, 0);
    next();
})

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue中关于router.beforeEach()的用法

    vue中关于router.beforeEach()的用法

    这篇文章主要介绍了vue中关于router.beforeEach()的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • vue forEach循环数组拿到自己想要的数据方法

    vue forEach循环数组拿到自己想要的数据方法

    今天小编就为大家分享一篇vue forEach循环数组拿到自己想要的数据方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue源码解析之事件机制原理

    vue源码解析之事件机制原理

    这篇文章主要介绍了vue源码解析之事件机制原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 深入理解vue中slot与slot-scope的具体使用

    深入理解vue中slot与slot-scope的具体使用

    这篇文章主要介绍了深入理解vue中slot与slot-scope的具体使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue弹窗插件实战代码

    vue弹窗插件实战代码

    这篇文章主要介绍了vue弹窗插件实战代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • uniapp 获取系统信息的方法小结

    uniapp 获取系统信息的方法小结

    uni-app提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息,系统信息返回的内容非常多,各操作系统、各家小程序、各浏览器对它们的定义也不相同
    2022-11-11
  • Ant Design Pro 之 ProTable使用操作

    Ant Design Pro 之 ProTable使用操作

    这篇文章主要介绍了Ant Design Pro 之 ProTable使用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 手写 Vue3 响应式系统(核心就一个数据结构)

    手写 Vue3 响应式系统(核心就一个数据结构)

    这篇文章主要介绍了手写 Vue3 响应式系统(核心就一个数据结构),响应式就是被观察的数据变化的时候做一系列联动处理。就像一个社会热点事件,当它有消息更新的时候,各方媒体都会跟进做相关报道。这里社会热点事件就是被观察的目标
    2022-06-06
  • vue图片裁剪插件vue-cropper使用方法详解

    vue图片裁剪插件vue-cropper使用方法详解

    这篇文章主要为大家详细介绍了vue图片裁剪插件vue-cropper使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Vue中使用vue-pdf嵌入和展示PDF文件

    Vue中使用vue-pdf嵌入和展示PDF文件

    在vue中实现在线预览PDF文件我们可以使用vue-pdf来实现,下面这篇文章主要介绍了Vue中使用vue-pdf嵌入和展示PDF文件的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10

最新评论