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 相关文章推荐
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
Feb 03 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
Aug 11 Javascript
jQuery手指滑动轮播效果
Dec 22 Javascript
Jquery EasyUI $.Parser
Jun 02 jQuery
VUE元素的隐藏和显示(v-show指令)
Jun 23 Javascript
vue实现简单的星级评分组件源码
Nov 16 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
Nov 15 Javascript
JS window对象简单操作完整示例
Jan 14 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通过加锁实现并发情况下抢码功能
2016/08/10 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
prototype 的说明 js类
2006/09/07 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
Python httplib模块使用实例
2015/04/11 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
python语音识别实践之百度语音API
2018/08/30 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
优秀教师的感人事迹
2014/02/04 职场文书
调解协议书
2014/04/16 职场文书
端午节演讲稿
2014/05/23 职场文书
商业项目策划方案
2014/06/05 职场文书
电子工程求职信
2014/07/17 职场文书
群众路线对照检查材料
2014/09/22 职场文书
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS