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 Html结构转字符串形式显示代码
Nov 15 Javascript
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
js闭包的用途详解
Nov 09 Javascript
jQuery中:gt选择器用法实例
Dec 29 Javascript
最佳的JavaScript错误处理实践
Jul 16 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
Feb 10 Javascript
解决iview多表头动态更改列元素发生的错误的方法
Nov 02 Javascript
JS闭包经典实例详解
Dec 20 Javascript
vue项目打包后怎样优雅的解决跨域
May 26 Javascript
layui table复选框禁止某几条勾选的实例
Sep 20 Javascript
js+html实现点名系统功能
Nov 05 Javascript
js实现二级联动简单实例
Jan 11 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
教你如何把一篇文章按要求分段
2006/10/09 PHP
基于php split()函数的用法详解
2013/06/05 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
PHP加密解密函数详解
2015/10/28 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
document.compatMode介绍
2009/05/21 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
Python isinstance判断对象类型
2008/09/06 Python
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
python学习笔记:字典的使用示例详解
2014/06/13 Python
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
Python sys.argv用法实例
2015/05/28 Python
python实现类之间的方法互相调用
2018/04/29 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
Pytorch的mean和std调查实例
2020/01/02 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
Jupyter加载文件的实现方法
2020/04/14 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python