Animationswechsel zwischen Elementen bezieht sich auf den Wechsel zwischen zwei dom
-Elementen, z. B. wenn ein div
verschwindet und ein anderes verschwindet div
wird angezeigt, was dem Ausblendeffekt entspricht, und die Anzeige entspricht dem Einblendeffekt. In diesem Beispiel verwenden wir zwei div
, einer zeigt Hallo Welt
, der andere zeigt bye world
an und steuert dann die Umschaltung der Animation. Der Code lautet wie folgt: dom
元素之间的切换,比如一个div
消失,另一个div
显示,消失对应着渐出的效果,显示对应渐入的效果,本例我们以两个div
,一个显示hello world
,另一个显示bye world
,然后使用一个按钮控制动画的切换,代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>元素切换动画的实现</title> <style> .v-enter-from{ opacity: 0; } .v-enter-active{ transition: opacity 1s ease-in; } .v-enter-to{ opacity: 1; } .v-leave-from{ opacity: 1; } .v-leave-active{ transition:opacity 1s ease-in } .v-leave-to{ opacity: 0; } </style> <script src="https://unpkg.com/vue@next"></script> </head> <body> <div id="root"></div> </body> <script> const app = Vue.createApp({ data() { return { show:false } }, methods: { handleClick(){ this.show = !this.show; } }, template: ` <transition mode="out-in" appear> <div v-if="show">hello world </div> <div v-else="show" >bye world </div> </transition> <button @click="handleClick">switch</button> ` }); const vm = app.mount('#root'); </script>
如上面的代码所示,我们使用CSS定义好渐入和渐出的效果,然后将我们要做动画的div
放到<transition></transition>
标签之间,使用一个Boolean
变量show
控制元素的显示和隐藏,当我们点击按钮的时候,执行handleClick
函数,将show
变量取反,达到切换的效果。 在代码中我们还看到了在transition标签上使用了一个mode="out-in"
,这个mode
的取值其实还有一个是mode="in-out"
,两者的区别如下:
mode="out-in"
: 表示两个元素切换的时候,当前的元素先消失,待显示的元素再显示 mode="in-out"
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>组件间切换动画的实现</title> <style> .v-enter-from{ opacity: 0; } .v-enter-active{ transition: opacity 1s ease-in; } .v-enter-to{ opacity: 1; } .v-leave-from{ opacity: 1; } .v-leave-active{ transition:opacity 1s ease-in } .v-leave-to{ opacity: 0; } </style> <script src="https://unpkg.com/vue@next"></script> </head> <body> <div id="root"></div> </body> <script> // 多个单组件之间的动画 const ComponentA = { template:'<div>hello world</div>' } const ComponentB = { template:'<div>bye world</div>' } const app = Vue.createApp({ data() { return { component:'component-a' } }, methods: { handleClick(){ if(this.component === 'component-a'){ this.component = 'component-b'; }else{ this.component = 'component-a'; } } }, components:{ 'component-a':ComponentA, 'component-b':ComponentB }, // 动态组件的方式 template: ` <transition mode="out-in" appear> <component :is="component" /> </transition> <button @click="handleClick">switch</button> ` }); const vm = app.mount('#root'); </script>
div
, das wir animieren möchten, zwischen den <transition></transition>
-Tags, indem wir a verwenden Boolean Die Codevariable <code>show
steuert das Anzeigen und Ausblenden von Elementen. Wenn wir auf die Schaltfläche klicken, wird die Funktion handleClick
ausgeführt und die Funktion show Die Variable
wird invertiert, um einen Schalteffekt zu erzielen. Im Code sehen wir auch, dass ein mode="out-in"
für das Übergangs-Tag verwendet wird. Der Wert dieses mode
ist tatsächlich mode =". in-out"
, der Unterschied zwischen den beiden ist wie folgt:
mode="out-in"
: bedeutet, dass beim Wechseln zweier Elemente das aktuelle Element zuerst verschwindet und verschwindet Das anzuzeigende Element wird dann angezeigt mode="in-out"
: Dies bedeutet, dass beim Wechseln zweier Elemente das anzuzeigende Element zuerst angezeigt wird und das aktuelle Element verschwindet Probieren Sie beide Attribute aus und sehen Sie sich den Effekt an. Im Code sehen wir, dass ein Attribut angezeigt wird. Dieses Attribut bedeutet, dass beim Öffnen der Schnittstelle im Browser keine Animation angezeigt wird Animation beim Laden der Seite Animationsumschaltung zwischen KomponentenIn Vue verwenden wir mehr Komponenten. Tatsächlich können wir das obige Beispiel auch modifizieren und in Form dynamischer Komponenten implementieren . Der Animationseffekt des Wechsels zwischen den oben genannten Elementen lautet wie folgt: rrreee
Das obige ist der detaillierte Inhalt vonSo wechseln Sie die Animation von Elementen und Komponenten in Vue3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!