过渡效果在交互体验中的重要性不言而喻。以往我们使用js或Jquery添加或移除元素的类(class),搭配CSS中定义好的样式,再引用一些javascript库之后,可以做作出非常复杂,惊艳的动态效果,不过这套方法还是太繁琐。
vue.js内置了一套过渡系统,可以在元素从DOM中插入或移除时自动应用过渡效果。vue会在是党的时机触发css过渡或者动画,你也可以提供相应的javascript钩子函数在过渡过程中执行自定义的DOM操作。
每个过渡效果,都需要在目标元素上使用transition特性。
<div v-if="show" transition="my-style">显示</div>
transition的特性可以与以下指令一起搭配使用:
1.v-if 2.v-show 3.v-for 4.动态组件
还有其它的一些指令或资源,大家可以自行查找。
完整代码实例如下:
<div v-if="show" :transition="expand"></div> // expand必需事先定义好,expand后面写样式要用(关键) <transition><div v-if="show">显示</div></transition>这样的嵌套也可以 .expand-transition { // 必需写 transition: all .3s ease; height: 30px; padding: 10px; background-color: #eee; overflow: hidden; } .expand-enter{ //开始进入过渡,元素被插入生效 transition:opacity .5s; } .fade-leave-active { // 结束状态 opacity:0; }
当然有开始肯定是有结束的状态,它其实是有四个(CSS类)名在enter/leave的状态中切换。
1.v-enter:定义进入过渡的开始状态,在元素被插入的时生效,在下一个帧移除
2.v-enter-active:定义进入过渡的结束状态,在元素被插入的时候生效,在transition/animation完成之后移除
3.v-leave:定义离开过渡的开始状态,在离开过渡被触发时生效,在下一帧移除
4.v-leave-active:定义离开过渡的开始状态,在离开过渡被触发时生效,在下一个帧移除
根据以上四个状态,就可以完整的写好一个css的一个过渡效果,比如页面从窗口左侧划入进场,这样是不是很酷啊?