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一些题目的解析
Dec 25 Javascript
js计算两个时间之间天数差的实例代码
Nov 19 Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
全面解析Bootstrap排版使用方法(文字样式)
Nov 30 Javascript
Javascript复制实例详解
Jan 28 Javascript
浅谈Cookie的生命周期问题
Aug 02 Javascript
Three.js的使用及绘制基础3D图形详解
Apr 27 Javascript
Vue修改mint-ui默认样式的方法
Feb 03 Javascript
angularjs数组判断是否含有某个元素的实例
Feb 27 Javascript
layui使用label标签的方法
Sep 14 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 Javascript
uniapp开发打包多端应用完整方法指南
Dec 24 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
使用php4加速网络传输
2006/10/09 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
JS实现新建文件夹功能
2017/06/17 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
Django在Model保存前记录日志实例
2020/05/14 Python
如何提高MySql的安全性
2014/06/19 面试题
通信工程专业女生个人求职信
2013/09/21 职场文书
军训心得体会
2013/12/31 职场文书
对教师的评语
2014/04/28 职场文书
乳制品整治工作方案
2014/05/29 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书