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 appendChild,innerHTML,join性能比较代码
Aug 29 Javascript
jquery的$(document).ready()和onload的加载顺序
May 26 Javascript
getElementByIdx_x js自定义getElementById函数
Jan 24 Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 Javascript
jquery衣服颜色选取插件效果代码分享
Aug 28 Javascript
jQuery实现的网页左侧在线客服效果代码
Oct 23 Javascript
微信小程序 video详解及简单实例
Jan 16 Javascript
深入理解Angular.JS中的Scope继承
Jun 04 Javascript
JavaScript异步上传图片文件的实例代码
Jul 04 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
Oct 23 Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 Javascript
uniapp与webview之间的相互传值的实现
Jun 29 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.MVC的模板标签系统(一)
2006/09/05 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
javascript 函数调用规则
2009/08/26 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
Django多数据库联用实现方法解析
2020/11/12 Python
荷兰本土平价百货:HEMA
2017/10/23 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
高级护理实习生自荐信
2013/09/28 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
公司管理建议书范文
2014/03/12 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
开国大典观后感
2015/06/04 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书