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 相关文章推荐
jquery提升性能最佳实践小结
Dec 06 Javascript
js中this的用法实例分析
Jan 10 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
Oct 09 Javascript
用jquery快速解决IE输入框不能输入的问题
Oct 04 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
Mar 10 Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 Javascript
layui.js实现的表单验证功能示例
Nov 15 Javascript
vue登录路由验证的实现
Dec 13 Javascript
详解Node.js模板引擎Jade入门
Jan 19 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
Jun 26 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 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 正则表达式常用函数
2014/08/17 PHP
php之readdir函数用法实例
2014/11/13 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP导入导出Excel代码
2015/07/07 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
yii用户注册表单验证实例
2015/12/26 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
Convert Seconds To Hours
2007/06/16 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Django models.py应用实现过程详解
2019/07/29 Python
python 实现兔子生兔子示例
2019/11/21 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
大学生职业生涯规划书模版
2013/12/30 职场文书
餐厅总厨求职信
2014/03/04 职场文书
工作分析计划书
2014/04/30 职场文书
建材投资建议书
2014/05/16 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
学生保证书格式
2015/02/27 职场文书
公司捐书倡议书
2015/04/27 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
法院执行局工作总结
2015/08/11 职场文书