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 对象比较实现代码
Apr 27 Javascript
Javascript attachEvent传递参数的办法
Dec 14 Javascript
小议Javascript中的this指针
Mar 18 Javascript
JQuery中$之选择器用法介绍
Apr 05 Javascript
js实现进度条的方法
Feb 13 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 Javascript
详解Bootstrap插件
Apr 25 Javascript
Angularjs 1.3 中的$parse实例代码
Sep 14 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
Aug 06 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
quickjs 封装 JavaScript 沙箱详情
Nov 02 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下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
Python创建模块及模块导入的方法
2015/05/27 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
使用Python实现牛顿法求极值
2020/02/10 Python
Python sorted对list和dict排序
2020/06/09 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
pytorch SENet实现案例
2020/06/24 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
一道Delphi上机题
2012/06/04 面试题
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
警察思想汇报
2014/01/04 职场文书
团日活动总结书
2014/05/08 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python