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函数库)S.Sams Lifexperience ScriptClassLib
Apr 29 Javascript
asp批量修改记录的代码
Jun 25 Javascript
url 特殊字符 传递参数解决方法
Jan 01 Javascript
JS获取时间的方法
Jan 21 Javascript
Javascript优化技巧之短路表达式详细介绍
Mar 27 Javascript
Javascript中setTimeOut和setInterval的定时器用法
Jun 12 Javascript
jQuery实现的无限级下拉菜单功能示例
Sep 12 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
jQuery 表单序列化实例代码
Jun 11 jQuery
浅谈关于angularJs中使用$.ajax的注意点
Aug 12 Javascript
JS实现简单表格排序操作示例
Oct 07 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 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多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
php实用代码片段整理
2016/11/12 PHP
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
python清除字符串里非数字字符的方法
2015/07/02 Python
Python中的一些陷阱与技巧小结
2015/07/10 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
django2笔记之路由path语法的实现
2019/07/17 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
经典C++面试题一
2016/11/06 面试题
大学生在校学习的自我评价
2014/02/18 职场文书
美化环境标语
2014/06/20 职场文书
家长评语怎么写
2014/12/30 职场文书
合作合同协议书
2016/03/21 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL