美文网首页
vue-router过渡动效

vue-router过渡动效

作者: Mr无愧于心 | 来源:发表于2019-01-11 14:12 被阅读0次

    前言:

    一个常用的需求:当路由进行切换的时候进入不同的页面时,我们可以添加不同的切换方式,这时就用到了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;
    }
    
    

    相关文章

      网友评论

          本文标题:vue-router过渡动效

          本文链接:https://www.haomeiwen.com/subject/jlkxdqtx.html