Vue 滚动行为的具体使用方法

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

滚动行为

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

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

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

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

返回滚动位置的对象信息

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

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

<div id="app">
  <h1>滚动行为</h1>
  <ul>
    <li><router-link to="/">首页</router-link></li>
    <li><router-link to="/foo">导航</router-link></li>
    <li><router-link to="/bar">关于</router-link></li>
    <li><router-link to="/bar#an1">红色页面</router-link></li>
    <li><router-link to="/bar#an2">蓝色页面</router-link></li>
  </ul>
  <router-view></router-view>
</div>
<script>
  var Home = {
    template:"<div>home</div>"
  }
  var Foo = {
    template:"<div>foo</div>"
  }
  var Bar = {
    template:
      `
        <div>
          bar
          <div style="height:500px;background: yellow;"></div>
          <p id="an1" style="height:500px;background: red;">红色页面</p>
          <p id="an2" style="height:300px;background: blue;">蓝色页面</p>
        </div>
      `
  }

  var router = new VueRouter({
    mode:"history",
    //控制滚动位置
    scrollBehavior (to, from, savedPosition) {
      //判断如果滚动条的位置存在直接返回到当前位置,否者返回到起点
      if (savedPosition) {
        return savedPosition
      } else {
        if (to.hash) {
          return {selector: to.hash}
        }
      }
    },
    routes:[
      {
        path:"/",component:Home
      },
      {
        path:"/foo",component:Foo
      },
      {
        path:"/bar",component:Bar
      }
    ]
  });
  var vm = new Vue({
    el:"#app",
    router
  });
</script> 

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


# Vue  # 滚动行为  # 滚动  # Vue-Router进阶之滚动行为详解  # 详解10分钟学会vue滚动行为  # 是一个  # 让你  # 就像  # 或者是  # 布尔  # 自定义  # 只在  # 第三个  # 能做到  # 首页  # 时才  # 到新  # 大家多多  # 滚动条  # 加载  # 模式下  # const  # lt  # VueRouter  # routes 


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


相关推荐: MySQL查询结果复制到新表的方法(更新、插入)  Python制作简易注册登录系统  如何在腾讯云免费申请建站?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  如何在 React 中条件性地遍历数组并渲染元素  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  js代码实现下拉菜单【推荐】  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Python并发异常传播_错误处理解析【教程】  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何获取上海专业网站定制建站电话?  进行网站优化必须要坚持的四大原则  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  晋江文学城电脑版官网 晋江文学城网页版直接进入  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  使用Dockerfile构建java web环境  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  详解vue.js组件化开发实践  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  香港服务器部署网站为何提示未备案?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  微信小程序 配置文件详细介绍  怎样使用JSON进行数据交换_它有什么限制  如何基于云服务器快速搭建网站及云盘系统?  iOS UIView常见属性方法小结  大连 网站制作,大连天途有线官网?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  详解jQuery中的事件  Android自定义listview布局实现上拉加载下拉刷新功能  利用 Google AI 进行 YouTube 视频 SEO 描述优化  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何获取免费开源的自助建站系统源码?  如何解决hover在ie6中的兼容性问题  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  如何在阿里云服务器自主搭建网站?  如何在万网主机上快速搭建网站?  如何在服务器上三步完成建站并提升流量?  移动端脚本框架Hammer.js  Laravel集合Collection怎么用_Laravel集合常用函数详解