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 获取表单file全路径
Dec 31 Javascript
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
基于jquery的多功能软键盘插件
Jul 25 Javascript
jquery插件开发之实现jquery手风琴功能分享
Mar 10 Javascript
jQuery插件imgPreviewQs实现上传图片预览
Jan 15 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
关于layui flow loading占位图的实现方法
Sep 21 Javascript
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
ES6 async、await的基本使用方法示例
Jun 06 Javascript
javascript实现移动端上传图片功能
Aug 18 Javascript
JSONObject与JSONArray使用方法解析
Sep 28 Javascript
Vue3 实现双盒子定位Overlay的示例
Dec 22 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
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
Python入门之后再看点什么好?
2018/03/05 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python递归实现快速排序
2018/08/18 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
外贸英语专业求职信范文
2013/12/25 职场文书
年会活动策划方案
2014/01/23 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang