本文實例為大家分享了vue實現多個元素或多個組件之間動畫的具體代碼,供大家參考,具體內容如下
多個元素的過渡
<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>按照之前的寫法方式,漸隱漸出的效果并沒有出現該有的效果,那么為什么呢?
在if else兩個元素切換的時候,會盡量的復用dom,正是vue,dom的復用,導致動畫的效果不會出現,如果想要vue不去復用dom,之前也說過,怎么做呢,給兩個div不同的key值就行了
<div v-if='show' key='hello'>hello world</div><div v-else key='bye'>bye world</div>
這樣就可以有個明顯的動畫效果,多個元素過渡動畫的效果。
transition還提供了一個mode屬性,in-out是先顯示再隱藏,out-in是先隱藏再顯示
多個組件的過渡
<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>這個就是多個組件的過渡,采用的是上面的方式,替換子組件,那么我們換一種方式,用動態組件
<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>
新聞熱點
疑難解答
圖片精選