2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > vue路由切换动画效果

vue路由切换动画效果

时间:2019-01-15 14:48:38

相关推荐

vue路由切换动画效果

router.js【路由守卫在元信息上加入时间戳】

beforeRouteEnter (to, from, next) {next(vm => {if(to.name=='root'){for (const key in routeData) {routeData[key].meta?routeData[key].meta.enterpagetimestamp=null:routeData[key].meta={enterpagetimestamp:null};}to.meta.enterpagetimestamp=Date.parse(new Date());}else{to.meta?to.meta:to.meta={}to.meta.enterpagetimestamp=to.meta.enterpagetimestamp?to.meta.enterpagetimestamp:Date.parse(new Date());}});},

app.vue

<template><div><transition :name="transitionName"><router-view></router-view></transition></div></template><script>export default {data() {return {transitionName: ''}},watch: { //使用watch 监听$router的变化$route(to, from) {//如果to索引大于from索引,判断为前进状态,反之则为后退状态if (this.$route.meta.enterpagetimestamp?this.$route.meta.enterpagetimestamp>from.meta.enterpagetimestamp:true) {//设置动画名称this.transitionName = 'slide-left';} else {this.transitionName = 'slide-right';}}}}</script><style>.slide-right-enter-active,.slide-right-leave-active,.slide-left-enter-active,.slide-left-leave-active {will-change: transform;transition: all 500ms;position: absolute;}.slide-right-enter {opacity: 0;transform: translate3d(-100%, 0, 0);}.slide-right-leave-active {opacity: 0;transform: translate3d(100%, 0, 0);}.slide-left-enter {opacity: 0;transform: translate3d(100%, 0, 0);}.slide-left-leave-active {opacity: 0;transform: translate3d(-100%, 0, 0);}</style>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。