<!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>Document</title>
<script src="https://unpkg.com/vue@next"></script>
<style>
.v-enter-from {
opacity: 0;
}
.v-leave-to {
opacity: 0;
}
.v-enter-active,
.v-leave-active {
transition: opacity 2s ease;
}
.v-enter-to,
.v-leave-from {
opacity: 1;
}
</style>
</head>
<body>
<div id="root"></div>
<script>
/**
* mode: out-in(先隐藏再展示)、in-out(先展示再隐藏)
* 如果不设置,单组件动画会同时进行
* appear: 初始化动画效果 立即执行(组件第一次进来就执行)
*
*/
const ComponentA = {
template: '<h1>hello world</h1>'
}
const ComponentB = {
template: '<h1>bye world</h1>'
}
const app = Vue.createApp({
components: {
'component-a': ComponentA,
'component-b': ComponentB
},
template: `
<div>
<transition mode="out-in" appear>
<component :is="componentName">
</transition>
<button @click="handleClick">切换</button>
</div>
`,
data(){
return {
isShow: true,
componentName: 'component-a'
}
},
methods: {
handleClick() {
if (this.componentName == 'component-a') {
this.componentName = 'component-b'
} else {
this.componentName = 'component-a'
}
}
},
})
app.mount('#root')
</script>
</body>
</html>
vue3进阶动画3-单元素单组件动画切换
最新推荐文章于 2024-05-17 08:48:10 发布