一:二者的对比

1.动画循环就用animation。在animation中有一个animation-iteration-count属性可以定义循环次数。transition是执行一次以后就不会执行,但是可以通过transitionEnd事件添加循环,与animation相比animation更加简单明了。

2.自动触发用animation。当页面中的动画是自己执行的那么我们考虑用animation,因为transition是需要借助伪类、js、@madia触发的。常见的伪类是:hover ,:focus。 常见的js就比如click事件。@media可以用于页面缩小到1000px你可以展示你需要的动画。

3.复杂的动画用animation。在遇到很复杂的动画那就用animation。因为animation可以定义关键帧。那你就可以控制每一帧的动画效果。简单的动画效果可以用transition,里面有transition-timing-function属性可以展示动画的速度效果。

二.用transition实现Vue动画

1.在目标元素外包裹<transition name="xxx">

<div id="test">
    <button @click="isShow=!isShow">toggle</button>
   <transition name="xxx">
       <p v-show="isShow">hello</p>
   </transition>
</div>

2.定义class样式

指定过渡样式

 /*显示、隐藏时的过渡效果*/
        .xxx-enter-active,.xxx-leave-active{
            transition: opacity 1s;
        }

 

隐藏样式

/*隐藏时的样式*/
        .xxx-enter,.xxx-to{
            opacity: 0;
        }

transition和animation的用法基本相同,但一般在项目中transition用的以较多

.xxx-enter-active{
            animation: bounce-in .5s;
        }
        .xxx-levave-active{
            animation: bounce-in .5s reverse;
        }
        @keyframes bounce-in {
            10%{
                transform: scale(0);
            }
            50%{
                transform: scale(1.5);
            }
            100%{
                transform: scale(1);
            }
        }