在页面应用动态组件实现一个简单的“TODO_LIST”,要求实现: 页面展示“待办事项”和“已完成事项”按钮 点击“待办事项”按钮切换到待办事项列表 点击“已完成事项”按钮切换到已完成事项列表 “待办事项”列表页和“已完成事项”列表页以列表的形式展示所有事项信息,包含事项的标题(title)和状态(status) 使用transition组件实现两个组件切换时的过渡效果
时间: 2023-08-24 09:05:04 浏览: 140
好的,我可以为您提供一个基于Vue.js的简单实现,代码如下:
```html
<template>
<div>
<div class="btn-group">
<button
class="btn"
:class="{ 'active': currentTab === 'todo' }"
@click="currentTab = 'todo'"
>
待办事项
</button>
<button
class="btn"
:class="{ 'active': currentTab === 'done' }"
@click="currentTab = 'done'"
>
已完成事项
</button>
</div>
<transition name="fade">
<div v-if="currentTab === 'todo'">
<h2>待办事项</h2>
<ul>
<li v-for="item in todoList" :key="item.id">
{{ item.title }} ({{ item.status }})
</li>
</ul>
</div>
</transition>
<transition name="fade">
<div v-if="currentTab === 'done'">
<h2>已完成事项</h2>
<ul>
<li v-for="item in doneList" :key="item.id">
{{ item.title }} ({{ item.status }})
</li>
</ul>
</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
currentTab: 'todo', // 默认显示待办事项
todoList: [
{ id: 1, title: '学习Vue.js', status: '未完成' },
{ id: 2, title: '学习React', status: '未完成' },
{ id: 3, title: '学习Angular', status: '未完成' },
],
doneList: [
{ id: 4, title: '学习JavaScript', status: '已完成' },
{ id: 5, title: '学习HTML/CSS', status: '已完成' },
],
};
},
};
</script>
<style>
.btn-group {
margin-bottom: 10px;
}
.btn {
padding: 5px 10px;
}
.btn.active {
background-color: #007bff;
color: #fff;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
</style>
```
在这个例子中,我们使用了Vue.js的数据绑定和条件渲染功能,通过点击按钮来切换当前显示的列表,而动态组件的过渡效果则是通过Vue.js提供的transition组件来实现的。其中,name属性设置为"fade",表示我们将使用CSS过渡来实现组件的进入和离开时的动画效果。具体实现可参考style标签中的CSS代码。
当我们点击按钮来切换两个列表时,页面会出现淡入淡出的过渡效果,使页面更加流畅和美观。
阅读全文