<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue中多个元素或组件的过渡</title> <script src="./vue.js"></script> <style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-active,.v-leave-active{ transition:opacity 1s; } </style> </head> <body> <div id="root"> <transition mode="out-in"> <component :is="type"></component> <!--动态组件的使用--> <!--<child v-if="show"></child>--> <!--<child-one v-else></child-one>--> <!--<div v-if="show" key="hello">hello world</div> <!–key的创建,避免DOM标签的复用–>--> <!--<div v-else key="bye">Bye World</div>--> </transition> <button @click="handleClick">toggle</button> </div> <script> Vue.component('child',{ template:'<div>child</div>' }); Vue.component('child-one',{ template:'<div>child-one</div>' }); var vm = new Vue({ el: '#root', data: { // show: true type:'child' }, methods: { handleClick: function () { // this.show = !this.show this.type = this.type === 'child' ? 'child-one':'child' }, } }) </script> </body> </html> <!-- transition上提供了mode配置参数 mode='in-out' 先显示再隐藏 mode='out-in' 先隐藏再显示 -->