详解10分钟学会vue滚动行为


Posted in Javascript onSeptember 21, 2017

滚动行为

什么是路由的滚动行为

当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样

注意: 这个功能只在 HTML5 history 模式下可用。在这个模式下我们需要启动一个服务

我们用scrollBehavior 方法来做路由滚动

scrollBehavior 方法接收 to 和 from 路由对象。第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用

下面我们做一个小案例来了解一下

效果

详解10分钟学会vue滚动行为

<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>

vue滚动小案例

https://besmall.github.io/vue-gundong/

https://github.com/Besmall/vue-gundong

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于逻辑运算的简单权限系统(实现) JS 版
Mar 24 Javascript
jquery.validate使用攻略 第二部
Jul 01 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
Jan 26 Javascript
javascript原生ajax写法分享
Apr 10 Javascript
微信小程序实现滑动删除效果
May 19 Javascript
react native实现往服务器上传网络图片的实例
Aug 07 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
详解创建自定义的Angular Schematics
Jun 06 Javascript
js DOM的事件常见操作实例详解
Dec 16 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
Jun 29 Javascript
原生JS实现京东查看商品点击放大
Dec 21 Javascript
node.js如何自定义实现一个EventEmitter
Jul 16 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 #jQuery
JavaScript实现简单生成随机颜色的方法
Sep 21 #Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 #Javascript
shiro授权的实现原理
Sep 21 #Javascript
AngularJS 的$timeout服务示例代码
Sep 21 #Javascript
JS路由跳转的简单实现代码
Sep 21 #Javascript
JS实现的简单标签点击切换功能示例
Sep 21 #Javascript
You might like
PHP的autoload机制的实现解析
2012/09/15 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
2016/11/05 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
python的unittest测试类代码实例
2017/12/07 Python
实例讲解python中的协程
2018/10/08 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
python定位xpath 节点位置的方法
2019/08/27 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
SQL Server数据库笔试题和答案
2016/02/04 面试题
查询优化的一般准则有哪些
2015/03/08 面试题
如何写一份好的自荐信
2014/01/02 职场文书
单位办理社保介绍信
2014/01/10 职场文书
户外婚礼策划方案
2014/02/08 职场文书
会计求职自荐信范文
2015/03/04 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
安全伴我行主题班会
2015/08/13 职场文书
Python中for后接else的语法使用
2021/05/18 Python
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技
关于Redis的主从复制及哨兵问题
2022/06/16 Redis