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


Posted in Javascript onSeptember 13, 2017

滚动行为

使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。 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
  }
 }
}

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

Javascript 相关文章推荐
jQuery制作简单柱状图实例
Jan 28 Javascript
详解js跨域原理以及2种解决方案
Dec 09 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
Jun 15 Javascript
JQuery控制图片由中心点逐渐放大效果
Jun 26 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
Dec 22 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
微信小程序中form 表单提交和取值实例详解
Apr 20 Javascript
JS简单数组排序操作示例【sort方法】
May 17 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 Javascript
JS倒计时两种实现方式代码实例
Jul 27 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 Javascript
Vue 滚动行为的具体使用方法
Sep 13 #Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 #Javascript
VUE实现一个分页组件的示例
Sep 13 #Javascript
jquery 键盘事件的使用方法详解
Sep 13 #jQuery
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 #Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
Sep 13 #Javascript
Js利用Canvas实现图片压缩功能
Sep 13 #Javascript
You might like
国外十大最流行的PHP框架排名
2013/07/04 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
常见的python正则用法实例讲解
2016/06/21 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
实现向右循环移位
2014/07/31 面试题
Shell脚本如何向终端输出信息
2014/04/25 面试题
生产总经理岗位职责
2013/12/19 职场文书
党员培训思想汇报
2014/01/07 职场文书
高中学校对照检查材料
2014/08/31 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
Python中的pprint模块
2021/11/27 Python