基于路由切换信息的过渡动效(2)
来源:互联网 发布:淘宝店铺卖什么吃香 编辑:程序博客网 时间:2024/05/16 03:25
避免千篇一律的路由切换动效的一个方法是:监听路由信息对象$route
,根据路由切换信息来动态选择一个过渡效果。
首先我们将transition
组件的name
绑定到Vue实例的模型属性,以便动态地修改这个名字 —— 你知道,不同的name
对应着不同的动效样式类名称,因而也就实现了不同的过渡动效。
例如,下面的模板将过渡动效组件的name
属性绑定到Vue实例的effect
属性:
<transition :name="effect"> <router-view></router-view></transition>
接下来是监听路由信息对象$route
的变化。$route
反映了当前的活动路由,它是VueRouter为Vue实例添加的一个响应式属性,因此我们可以在创建Vue实例时使用watch
配置项声明一个监听器,或者使用$watch()
方法监听它的每一次变化:
vm.$watch('$route',function(nv,ov){...})
$route
的新值(nv
- new value)代表当前的路由信息对象,旧值(ov
- old value)代表前一次的路由信息对象,因此我们可以根据路径切换的不同来改变实例的effect
属性。
例如,下面的代码,将根据当前的活动路径来设置Vue实例的effect
属性:
vm.$watch('$route',function(to,from){ const effectMap = { '/': 'home', '/blogs':'blog', '/about':'about' } this.effect = effectMap(to.path)})
使用第三方动效库
如果使用第三方动效库,例如Animate.css,那么就应当将enter-active-class
系列的样式类属性,绑定到Vue实例的响应式属性上。
例如,下面的模板中过渡动效组件的enter-active-class
属性被绑定到Vue实例的effect
属性:
<transition :enter-active-class="effect"> <router-view></router-view></transition>//..........................................................练习...................................................................//html部分<!doctype html><html><head> <meta charset="utf-8"> <link rel="stylesheet" href="lib/animate.css"></head><body> <div id="app" v-cloak> <nav class="header"> <router-link to="/">首页</router-link> <router-link to="/blogs">博客</router-link> <router-link to="/about">关于</router-link> </nav> <transition :enter-active-class="effect"> <router-view></router-view> </transition> </div> <script src="lib/vue-router.stack.min.js"></script> <script src="lib/lodash.min.js"></script> </body></html>//js部分 const EzHome = {template:'<div class="home"><h1>HOME</h1></div>'}const EzBlogs = {template:'<div class="blogs"><h1>BLOGS</h1></div>'}const EzAbout = {template:'<div class="about"><h1>ABOUT</h1></div>'}const router = new VueRouter({ routes:[ {path:'/',component:EzHome}, {path:'/blogs',component:EzBlogs}, {path:'/about',component:EzAbout} ]})new Vue({ el:'#app', router, data:{ effects: ['zoomIn','slideInDown','bounceIn','flipInX','rotateIn','rollIn','lightSpeedIn','fadeIn'], effect :'' }, watch:{ '$route'(to,from){ const effectMap = { "/":"fadeIn", "/blogs":"rotateIn", "/about":"zoomIn" } this.effect = ['animated', effectMap[to.path]].join(' ') } }})
阅读全文
0 0
- 基于路由切换信息的过渡动效(2)
- Fade数字切换动效
- Fade 数字切换动效
- Android可自定义动效的卡片切换视图
- android开源库----可自定义动效的卡片切换视图
- 图片自动切换(没有过渡效果)
- Transition(Activity切换过渡动画)
- 过渡(Transition)面积大小切换
- Windows下手动修改路由的方法
- rfc1723:路由信息协议(版本2)
- 基于material design的过渡加载动画
- 路由-标签切换格式2
- jQuery Ribbles - 基于WebGL的水面涟漪动效插件
- 路由切换
- Activity切换动效之translate
- JS由左向右的图片渐变过渡切换效果
- 【小技巧】制作一个滑动过渡切换的导航条
- Unity HTC修改场景切换的过渡场景
- 新的开始
- phantomjs的使用
- mysql中存取数据解决乱码问题(idea)
- Servlet生命周期
- gulp入门(2)
- 基于路由切换信息的过渡动效(2)
- angular.js 双向数据绑定,依赖注入
- 理解嵌入式开发中的一些硬件相关的概念
- StringBuffer的追加字符序列
- 卷积神经网络工作原理直观的解释
- 第六章作业
- Python库--pandas库学习笔记总结
- Markdown 语法和 MWeb 写作使用说明
- java程序流程控制,if语句,switch语句,while语句,do while语句,for 语句,break关键字,continue关键字