29vue学习——为组件切换添加动画效果

本文介绍如何在Vue中为组件切换添加动画效果,包括使用transition元素、定义CSS过渡样式及设置mode属性实现平滑过渡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

29vue学习——为组件切换添加动画效果

前言:

在前面的两篇文章中我们学习了如何通过 v-if 和 v-else 来实现两个组件之间的切换,通过 component 元素实现两个以上的组件的切换,但是我们还没有给他们的切换添加好看的动画效果呢!这篇文章就让我们来学习如何给组件切换添加动画效果吧!

总代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>组件切换</title>
    <style>
        .v-enter,.v-leave-to{
            opacity: 0;
            transform: translateX(150px)
        }
        .v-enter-active,.v-leave-active{
            transition: all 0.4s ease;
        }
    </style>
</head>

<body>
    <div class="body">
   
        <input type="button" value="登录" @click="name='login'">
        <input type="button" value="注册" @click="name='register'">
        <input type="button" value="首页" @click="name='index'">
        
        <!-- 有动画效果的 -->
        <!-- 使用 component 元素实现组件之间的切换 -->
        <transition mode="out-in">
            <component :is="name"></component>
        </transition>

    </div>

    <!-- 登录组件 -->
    <template id="login">
        <h3>我是登录组件</h3>
    </template>

    <!-- 注册组件 -->
    <template id="register">
        <h3>我是注册组件</h3>
    </template>

    <!-- 首页组件 -->
    <template id="index">
        <h3>我是首页组件</h3>
    </template>

    <script src="../lib/vue-2.4.0.js"></script>
    <script>
        /* 登录组件 */
        Vue.component("login", {
            template: "#login"
        })
        /* 注册组件 */
        Vue.component("register", {
            template: "#register"
        })
        /* 首页组件 */
        Vue.component('index', {
            template: "#index"
        })

        let vm = new Vue({
            el: ".body",
            data: {
                name: 'login'
            }
        })
    </script>
</body>

</html>

效果图:
在这里插入图片描述

1.原理:
在这里插入图片描述
2.讲解:

(1)我们只需要将 component 元素使用 transition 元素包裹起来即可
在这里插入图片描述

(2)定义好两组样式
在这里插入图片描述
(3)设置 mode 属性来设置切换时的动画顺序,下面为先出后入
在这里插入图片描述
(3.1)如果没有设置 mode 属性,效果如下:
在这里插入图片描述
(3.2)如果设置了 mode=“out-in” 属性,效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值