Vue-Router进阶之滚动行为详解

发布时间 - 2026-01-11 03:14:10    点击率:

滚动行为

使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。 vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动。

注意: 这个功能只在 HTML5 history 模式下可用。

当创建一个 Router 实例,你可以提供一个 scrollBehavior 方法:

var router = new VueRouter({
  routes: [...],
  scrollBehavior (to, from, savedPosition) {
    // return 期望滚动到哪个的位置
  }
})

scrollBehavior 方法接收 to 和 from 路由对象。第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用。

这个方法返回滚动位置的对象信息,长这样:

  • { x: number, y: number }
  • { selector: string }

如果返回一个布尔假的值,或者是一个空对象,那么不会发生滚动。

举例:

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

对于所有路由导航,简单地让页面滚动到顶部。

返回 savedPosition,在按下 后退/前进 按钮时,就会像浏览器的原生表现那样:

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

如果你要模拟『滚动到锚点』的行为:

scrollBehavior (to, from, savedPosition) {
 if (to.hash) {
  return {
   selector: to.hash
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Vue-Router  # 滚动行为  # vue路由滚动行为  # vue  # Vue-Router滚动行为的具体使用  # 是一个  # 让你  # 就像  # 你可以  # 你要  # 或者是  # 布尔  # 自定义  # 只在  # 按下  # 第三个  # 提供一个  # 能做到  # 时才  # 会像  # 创建一个  # 到新  # 大家多多  # 加载  # 模式下 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 HTTPS报错整理常见问题及解决方案  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  如何在云主机上快速搭建网站?  Bootstrap整体框架之JavaScript插件架构  装修招标网站设计制作流程,装修招标流程?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  详解Android图表 MPAndroidChart折线图  Laravel storage目录权限问题_Laravel文件写入权限设置  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  如何在服务器上配置二级域名建站?  如何在云服务器上快速搭建个人网站?  如何在万网利用已有域名快速建站?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何快速查询域名建站关键信息?  Laravel如何使用Gate和Policy进行授权?(权限控制)  微信小程序 input输入框控件详解及实例(多种示例)  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  利用JavaScript实现拖拽改变元素大小  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Laravel如何自定义错误页面(404, 500)?(代码示例)  在Oracle关闭情况下如何修改spfile的参数  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel观察者模式如何使用_Laravel Model Observer配置  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  如何在IIS7上新建站点并设置安全权限?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  简单实现jsp分页  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  微信小程序 require机制详解及实例代码  Linux安全能力提升路径_长期防护思维说明【指导】  佛山企业网站制作公司有哪些,沟通100网上服务官网?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  如何在橙子建站上传落地页?操作指南详解  再谈Python中的字符串与字符编码(推荐)  Laravel如何实现本地化和多语言支持?(i18n教程)  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  动图在线制作网站有哪些,滑动动图图集怎么做?  Python文件操作最佳实践_稳定性说明【指导】