Vue 滚动行为的具体使用方法


Posted in Javascript onSeptember 13, 2017

滚动行为

使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。 vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动。

注意: 这个功能只在 HTML5 history 模式下可用。

scrollBehavior 方法接收 to 和 from 路由对象。第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用。

const router = new VueRouter({
routes: [...],
scrollBehavior (to, from, savedPosition) {
 // return 期望滚动到哪个的位置
}
})

返回滚动位置的对象信息

{ x: number, y: number }
{ selector: string }

如果返回一个布尔假的值,或者是一个空对象,那么不会发生滚动。

<div id="app">
  <h1>滚动行为</h1>
  <ul>
    <li><router-link to="/">首页</router-link></li>
    <li><router-link to="/foo">导航</router-link></li>
    <li><router-link to="/bar">关于</router-link></li>
    <li><router-link to="/bar#an1">红色页面</router-link></li>
    <li><router-link to="/bar#an2">蓝色页面</router-link></li>
  </ul>
  <router-view></router-view>
</div>
<script>
  var Home = {
    template:"<div>home</div>"
  }
  var Foo = {
    template:"<div>foo</div>"
  }
  var Bar = {
    template:
      `
        <div>
          bar
          <div style="height:500px;background: yellow;"></div>
          <p id="an1" style="height:500px;background: red;">红色页面</p>
          <p id="an2" style="height:300px;background: blue;">蓝色页面</p>
        </div>
      `
  }

  var router = new VueRouter({
    mode:"history",
    //控制滚动位置
    scrollBehavior (to, from, savedPosition) {
      //判断如果滚动条的位置存在直接返回到当前位置,否者返回到起点
      if (savedPosition) {
        return savedPosition
      } else {
        if (to.hash) {
          return {selector: to.hash}
        }
      }
    },
    routes:[
      {
        path:"/",component:Home
      },
      {
        path:"/foo",component:Foo
      },
      {
        path:"/bar",component:Bar
      }
    ]
  });
  var vm = new Vue({
    el:"#app",
    router
  });
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery ui dialog里调用datepicker的问题
Aug 06 Javascript
jQuery 判断页面元素是否存在的代码
Aug 14 Javascript
表单元素的submit()方法和onsubmit事件应用概述
Feb 01 Javascript
Javascript中各种trim的实现详细解析
Dec 10 Javascript
JQuery $.each遍历JavaScript数组对象实例
Sep 01 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
Aug 18 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
vue axios重复点击取消上一次请求封装的方法
Jun 19 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 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
js 倒计时(高效率服务器时间同步)
Sep 12 #Javascript
You might like
php下使用无限生命期Session的方法
2007/03/16 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
PHP addcslashes()函数讲解
2019/02/03 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
python中黄金分割法实现方法
2015/05/06 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
浅谈Python中的模块
2020/06/10 Python
使用K.function()调试keras操作
2020/06/17 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
企业标语口号
2014/06/10 职场文书
家长高考寄语
2015/02/27 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏