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代码
Jun 13 Javascript
jquery移动点击的项目到列表最顶端的方法
Jun 24 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
Aug 05 Javascript
jquery基本选择器匹配多个元素的实现方法
Sep 05 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
Mar 21 Javascript
js合并两个数组生成合并后的key:value数组
May 09 Javascript
JS使用栈判断给定字符串是否是回文算法示例
Mar 04 Javascript
小程序如何支持使用 async/await详解
Sep 12 Javascript
js实现时间日期校验
May 26 Javascript
Vue+Java+Base64实现条码解析的示例
Sep 23 Javascript
jquery插件实现搜索历史
Apr 24 jQuery
利用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函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
PHP.vs.JAVA
2016/04/29 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
python的绘图工具matplotlib使用实例
2014/07/03 Python
用Python解决计数原理问题的方法
2016/08/04 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
使用python进行拆分大文件的方法
2018/12/10 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
先进党支部事迹材料
2014/01/13 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
出生证明格式
2015/06/15 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书