详解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 相关文章推荐
初学Javascript的一些总结
Nov 03 Javascript
Javascript 赋值机制详解
Nov 23 Javascript
javascript实现的多个层切换效果通用函数实例
Jul 06 Javascript
C++中的string类的用法小结
Aug 07 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
Node.js文件操作方法汇总
Mar 22 Javascript
JS阻止事件冒泡行为和闭包的方法
Jun 16 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
Jul 22 jQuery
vue.js默认路由不加载linkActiveClass问题的解决方法
Dec 11 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 Javascript
JavaScript简单编程实例学习
Feb 14 Javascript
vuex中store存储store.commit和store.dispatch的用法
Jul 24 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
网络资源
2006/10/09 PHP
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
Node.js实现文件上传
2016/07/05 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
python获取元素在数组中索引号的方法
2015/07/15 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
python numpy格式化打印的实例
2018/05/14 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
OpenCV 模板匹配
2019/07/10 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
实例讲解使用HTML5 Canvas绘制阴影效果的方法
2016/03/25 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
学习自我鉴定
2014/02/01 职场文书
会计求职自荐信
2014/06/20 职场文书
励志演讲稿800字
2014/08/21 职场文书
公民授权委托书
2014/10/15 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
加入学生会自荐书
2015/03/05 职场文书