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 相关文章推荐
JS加ASP二级域名转向的代码
May 17 Javascript
javascript 数据类型转换(parseInt,parseFloat)
Jul 20 Javascript
js 判断checkbox是否选中的实现代码
Nov 23 Javascript
html a标签-超链接中confirm方法使用介绍
Jan 04 Javascript
基于jQuery.Validate验证库知识点的详解
Apr 26 Javascript
JavaScript保留两位小数的2个自定义函数
May 05 Javascript
对象转换为原始值的实现方法
Jun 06 Javascript
原生js获取元素样式的简单方法
Aug 06 Javascript
jquery实现(textarea)placeholder自动换行
Dec 22 Javascript
基于vue的换肤功能的示例代码
Oct 10 Javascript
微信小程序tabbar底部导航
Nov 05 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 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
星际原理概述
2020/03/04 星际争霸
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
python打开windows应用程序的实例
2019/06/28 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
python连接PostgreSQL过程解析
2020/02/09 Python
学python最电脑配置有要求么
2020/07/05 Python
Python 在函数上添加包装器
2020/07/28 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
五水共治一句话承诺
2014/05/30 职场文书
安全宣传标语
2014/06/10 职场文书
协议书格式模板
2016/03/24 职场文书