详解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 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
理解Javascript_13_执行模型详解
Oct 20 Javascript
JavaScript常用基础知识强化学习
Dec 09 Javascript
JS实现根据密码长度显示安全条功能
Mar 08 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
May 02 Javascript
用angular实现多选按钮的全选与反选实例代码
May 23 Javascript
Vue.js中兄弟组件之间互相传值实例
Jun 01 Javascript
JS设置随机出现2个数字的实例代码
Jul 19 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
Apr 05 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
Apr 19 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
js+html+css实现手动轮播和自动轮播
Dec 30 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
python实现下载指定网址所有图片的方法
2015/08/08 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
大学社团活动策划书
2014/01/26 职场文书
素质拓展感言
2014/01/29 职场文书
工作态度检讨书
2014/02/11 职场文书
工资收入证明
2014/10/07 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
行政二审代理词
2015/05/25 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python