多個元素的過渡前端
<style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-acitve,.v-leave-active{ opacity: opacity 1s; } </style> <div id='app'> <transition> <div v-if='show'>hello world</div> <div v-else>bye world</div> </transition> <button @click='handleClick'>切換</button> </div> <script> var vm = new Vue({ el:'#app', data:{ show:true }, methods:{ handleClick:function(){ this.show = !this.show; } } }) </script> //前端全棧學習交流圈:866109386 //面向1-3經驗年前端開發人員 //幫助突破技術瓶頸,提高思惟能力
按照以前的寫法方式,漸隱漸出的效果並無出現該有的效果,那麼爲何呢? 在if else兩個元素切換的時候,會盡可能的複用dom,正是vue,dom的複用,致使動畫的效果不會出現,若是想要vue不去複用dom,以前也說過,怎麼作呢,給兩個div不一樣的key值就好了vue
<div v-if='show' key='hello'>hello world</div> <div v-else key='bye'>bye world</div>
這樣就能夠有個明顯的動畫效果,多個元素過渡動畫的效果。app
transition還提供了一個mode屬性,in-out是先顯示再隱藏,out-in是先隱藏再顯示dom
多個組件的過渡學習
<style> .v-enter, .v-leave-to { opacity: 0; } .v-enter-acitve, .v-leave-active { transition: opacity 1s; } </style> <div id='app'> <transition mode='out-in'> <child v-if='show'></child> <child-one v-else></child-one> </transition> <button @click='handleClick'>切換</button> </div> <script> Vue.component('child',{ template:'<div>child</div>' }) Vue.component('child-one',{ template:'<div>child-one</div>' }) var vm = new Vue({ el:'#app', data:{ show:true }, methods:{ handleClick:function(){ this.show = !this.show; } } }) </script> //前端全棧學習交流圈:866109386 //面向1-3經驗年前端開發人員 //幫助突破技術瓶頸,提高思惟能力
這個就是多個組件的過渡,採用的是上面的方式,替換子組件,那麼咱們換一種方式,用動態組件動畫
<style> .v-enter, .v-leave-to { opacity: 0; } .v-enter-acitve, .v-leave-active { transition: opacity 1s; } </style> <div id='app'> <transition mode='out-in'> <component :is='type'></component> </transition> <button @click='handleClick'>切換</button> </div> <script> Vue.component('child',{ template:'<div>child</div>' }) Vue.component('child-one',{ template:'<div>child-one</div>' }) var vm = new Vue({ el:'#app', data:{ type:'child' }, methods:{ handleClick:function(){ this.type = (this.type === 'child' ? 'child-one' : 'child') } } }) </script>
這樣也實現了多個組件的過渡效果。this