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 相关文章推荐
JavaScript 新手24条实用建议[TUTS+]
Jun 21 Javascript
Javascript 实用小技巧
Apr 07 Javascript
JQUBar 基于JQUERY的柱状图插件
Nov 23 Javascript
jQuery语法总结和注意事项小结
Nov 11 Javascript
Javascript中3个需要注意的运算符
Apr 02 Javascript
js实现固定显示区域内自动缩放图片的方法
Jul 18 Javascript
Javascript之String对象详解
Jun 08 Javascript
vue 中自定义指令改变data中的值
Jun 02 Javascript
jQuery实现表格隔行换色
Sep 01 jQuery
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
Mar 19 Javascript
JS获取当前时间戳方法解析
Aug 29 Javascript
vue项目实现分页效果
Mar 24 Vue.js
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
mysql时区问题
2008/03/26 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
jQuery的学习步骤
2011/02/23 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
vue生成token并保存到本地存储中
2018/07/17 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
python 日志增量抓取实现方法
2018/04/28 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Python实现ATM系统
2020/02/17 Python
python实现飞船大战
2020/04/24 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
求职简历自荐信范文
2013/10/21 职场文书
人事专员岗位职责
2013/11/20 职场文书
早餐连锁店计划书
2014/01/08 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
教师教育心得体会
2016/01/19 职场文书
公证书
2019/04/17 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android