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操作html控件实例(javascript添加html)
Dec 02 Javascript
通过url查找a元素应用案例
Apr 29 Javascript
JavaScript闭包详解
Feb 02 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
Sep 14 Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
Mar 08 Javascript
jQuery ajax调用webservice注意事项
Oct 08 jQuery
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
vue-cli3 karma单元测试的实现
Jan 18 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
利用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简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
很可爱的输入框
2008/08/03 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
对vue里函数的调用顺序介绍
2018/03/17 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
python使用chardet判断字符串编码的方法
2015/03/13 Python
Django的信号机制详解
2017/05/05 Python
使用numba对Python运算加速的方法
2018/10/15 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
申报职称专业技术个人的自我评价
2013/12/12 职场文书
检察官就职演讲稿
2014/01/13 职场文书
商场中秋节广播稿
2014/01/17 职场文书
自我鉴定总结
2014/03/24 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
党员检讨书
2014/10/13 职场文书
实习单位证明范例
2014/11/17 职场文书
师德先进个人材料
2014/12/20 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
对学校的意见和建议
2015/06/04 职场文书
小学生教师节广播稿
2015/08/19 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js