使用Tab栏实现“账号登录”和“二维码登录”这两种方式的切换,并通过transition组件结合animate.css实现切换时的动画效果。
时间: 2023-09-30 09:08:38 浏览: 60
好的,我理解了你的要求。以下是一个简单的实现示例:
```html
<template>
<div class="login-container">
<!-- Tab栏 -->
<div class="tab-bar">
<div
class="tab-item"
:class="{ active: loginType === 'account' }"
@click="loginType = 'account'"
>
账号登录
</div>
<div
class="tab-item"
:class="{ active: loginType === 'qrCode' }"
@click="loginType = 'qrCode'"
>
二维码登录
</div>
</div>
<!-- 登录表单 -->
<transition name="fade">
<div v-if="loginType === 'account'" class="login-form account">
<!-- 账号登录表单 -->
</div>
<div v-else class="login-form qr-code">
<!-- 二维码登录表单 -->
</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
loginType: 'account', // 当前登录类型
};
},
};
</script>
<style lang="scss">
.login-container {
.tab-bar {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
.tab-item {
padding: 10px;
cursor: pointer;
&.active {
color: #1890ff;
border-bottom: 2px solid #1890ff;
}
}
}
.login-form {
&.account {
/* 账号登录表单样式 */
}
&.qr-code {
/* 二维码登录表单样式 */
}
}
/* 切换动画 */
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
}
</style>
```
在这个示例中,我们通过一个 `loginType` 变量来记录当前的登录方式。点击 Tab 栏中的不同选项,就可以切换登录方式了。
为了实现切换时的动画效果,我们使用了 Vue 的过渡动画(`<transition>`)和 animate.css 库。在 `<transition>` 中,我们使用了 `name="fade"` 属性来指定动画的类名。在样式中,我们定义了 `.fade-enter-active`、`.fade-leave-active`、`.fade-enter` 和 `.fade-leave-to` 四个类,来指定动画效果和过程。在 `login-form` 元素中,我们使用了 `v-if` 来根据当前的 `loginType` 变量来判断要显示哪个表单。这样,当我们切换 Tab 栏时,就能实现过渡动画了。