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 相关文章推荐
javascript 常用代码技巧大收集
Feb 25 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
Jun 21 Javascript
javascript检查表单数据是否改变的方法
Jul 30 Javascript
jQuery使用之设置元素样式用法实例
Jan 19 Javascript
jQuery实现的动态伸缩导航菜单实例
May 07 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 Javascript
iframe高度自适应及隐藏滚动条的实例详解
Sep 29 Javascript
vue router 跳转后回到顶部的实例
Aug 31 Javascript
React Hooks的深入理解与使用
Nov 12 Javascript
详解element-ui中表单验证的三种方式
Sep 18 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 Javascript
js刷新页面location.reload()用法详解
Dec 09 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
详解JavaScript ES6中的Generator
2015/07/28 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
js选项卡的制作方法
2017/01/23 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
python标准日志模块logging的使用方法
2013/11/01 Python
python海龟绘图实例教程
2014/07/24 Python
Python编程中的反模式实例分析
2014/12/08 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
法律进企业活动方案
2014/03/04 职场文书
爱我中华教学反思
2014/04/28 职场文书
自主招生教师推荐信
2014/05/10 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
2014年村委会工作总结
2014/11/24 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
2016新年致辞
2015/08/01 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers