vue-router过渡动效

2019-01-11  本文已影响0人  Mr无愧于心

前言:

一个常用的需求:当路由进行切换的时候进入不同的页面时,我们可以添加不同的切换方式,这时就用到了vue-router过渡动效。

回顾之前的transition动画

<template>
 <transition name="fade">
    <p v-if="show">hello</p>
  </transition>
</template>

<style>  
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to{
  opacity: 0;
}
</style>

使用比较多的是css animation动画(比较省事)

<template>
  <transition name="bounce">
    <p v-if="show">animate</p>
  </transition>
</template>
<style>
  .bounce-enter-active {
    animation: bounce-in .5s;
  }
  .bounce-leave-active {
    animation: bounce-in .5s reverse;
  }
  @keyframes bounce-in {
    0% {
      transform: scale(0);
    }
    50% {
      transform: scale(1.5);
    }
    100% {
      transform: scale(1);
    }
  }
</style>

基于路由的动态过度

基于当前路由与目标路由的变化关系,动态设置过渡效果:

<template>
<router-link to='/login'>登录页<router-link>
<router-link to='/user'>个人页<router-link>
<transition :name='transitionName'>
  <router-view></router-view>
</transition>

<script>
//监听路由变化
watch:{
  "$route":function(to,from){
    if(to.path=='/login'){//如果跳到登录页,就启用slide-left类名的动画
      this.transitionName=='slide-left';
    }else if(to.path=='/login){//如果跳到个人页,就启用slide-right类名的动画
      this.transitionName=='slide-right';
    }
  }
}

<style>
.slide-left-enter-active{
  animation: slideInLeft .5s reverse;
} 
.slide-left-leave-active{
  animation: slideOutLeft .5s reverse;
}
.slide-right-enter-active{
  animation: slideInRight .5s reverse;
} 
.slide-right-leave-active{
  animation: slideOutRight .5s reverse;
}

上一篇下一篇

猜你喜欢

热点阅读