Vue官方的语言实在令我难以理解,因而本身写了一个demo,才能完全理解官方文档.我想总结一下css
运用到了css中的transition属性所以得名(我的理解)
我将过渡(Transitions)分为"出现"和"消失"两大块(动画Animations同理)ide
Vue将过渡(Transitions)定义了6个class类名,以下:函数
官方的例子:动画
//css .slide-fade-enter-active { transition: all .3s ease; } .slide-fade-leave-active { transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0); } .slide-fade-enter, .slide-fade-leave-to /* .slide-fade-leave-active for below version 2.1.8 */ { transform: translateX(10px); opacity: 0; }
//js show默认是false <div id="example-1"> <button @click="show = !show"> Toggle render </button> <transition name="slide-fade"> <p v-if="show">hello</p> </transition> </div>
官方的例子中,css只定义了4个过渡css,说好的6个状态呢?我是一脸懵逼,并且动起来还很流畅.code
1.缺失的第一个状态:v-enter-leave
过渡"出现"动画结束后,他会展现DOM元素,
官方省略了"v-enter-leave",由于这个DOM元素展现的样子也正是咱们"v-enter-leave"想要的效果,所以省略且不会影响动画效果orm
2.缺失的第二个状态:v-leave
过渡"消失"开始的第一帧也真是咱们DOM元素的样子,所以省略且不会影响动画效果事件
从上面的例子咱们也得出了,原来过渡和DOM元素实际上是没有什么关系的,咱们能够将过渡和DOM出现彻底分开.
1."出现"流程走一遍
2.DOM元素出现
3.'消失'流程走一遍
后面提到的动画(Animations)也是此流程
运用到了css中的animation属性所以得名(我的理解)
正如官方所说,动画和过渡相同,惟一的区别是:ci
动画与过渡的区别是在动画中 v-enter 类名在节点插入 DOM 后不会当即删除,而是在 animationend 事件触发时删除
官方代码:文档
.bounce-enter-active { animation: bounce-in 10s; } .bounce-leave-active { animation: bounce-in 10s reverse; } @keyframes bounce-in { 0% {//这里起是就至关于 v-enter transform: scale(0); } 50% { transform: scale(1.5); } 100% { transform: scale(1); } }
WF??彻底不懂,上面的话我理解了好久..在区别中解释这句的理解animation
1.过渡(Transitions)和动画(Animations)使用的css属性不一样
2.动画(Animations)里面的0% 其实就至关于过渡(Transitions)的v-enter,这样就好理解了官方的那句话了,动画(Animations)过程当中的0% 在"出现"或者"消失"完毕以后是一直存在的,直到"出现"或"消失"结束后才被去除.
再换一种粗略的说法,过渡(Transitions)的"出现"和"消失"里面的三个类是能够分开一步一步走的,
而动画(Animations)的"出现"和"消失"里面的三个类是不能分开的,同生死的.
若是错误,请多多指教~