Container 布局容器
学习目标
- 掌握 el-container 基础用法
- 理解布局容器的组合使用
- 学会创建常见的页面布局模式
- 完成基础页面布局实践
详细学习内容
1. Container 布局容器基础(30分钟)
1.1 基础概念
Container 布局容器是 Element Plus 提供的用于快速搭建页面基本结构的容器组件。它包含以下几个子组件:
el-container
:外层容器el-header
:顶栏容器el-aside
:侧边栏容器el-main
:主要区域容器el-footer
:底栏容器
1.2 基础用法
vue
<template>
<!-- 基础布局 -->
<el-container>
<el-header>Header</el-header>
<el-main>Main</el-main>
</el-container>
<!-- 带侧边栏的布局 -->
<el-container>
<el-header>Header</el-header>
<el-container>
<el-aside width="200px">Aside</el-aside>
<el-main>Main</el-main>
</el-container>
</el-container>
<!-- 完整布局 -->
<el-container>
<el-header>Header</el-header>
<el-container>
<el-aside width="200px">Aside</el-aside>
<el-main>Main</el-main>
</el-container>
<el-footer>Footer</el-footer>
</el-container>
</template>
<style>
.el-header {
background-color: #B3C0D1;
color: #333;
text-align: center;
line-height: 60px;
}
.el-aside {
background-color: #D3DCE6;
color: #333;
text-align: center;
line-height: 200px;
}
.el-main {
background-color: #E9EEF3;
color: #333;
text-align: center;
line-height: 160px;
}
.el-footer {
background-color: #B3C0D1;
color: #333;
text-align: center;
line-height: 60px;
}
</style>
1.3 常见布局模式
上中下布局
vue
<template>
<el-container direction="vertical">
<el-header height="60px">顶部导航</el-header>
<el-main>主要内容区域</el-main>
<el-footer height="60px">底部信息</el-footer>
</el-container>
</template>
左右布局
vue
<template>
<el-container>
<el-aside width="200px">侧边栏</el-aside>
<el-main>主要内容</el-main>
</el-container>
</template>
上左右下布局(经典后台布局)
vue
<template>
<el-container class="layout-container">
<el-header class="layout-header">
<div class="logo">管理系统</div>
<div class="user-info">用户信息</div>
</el-header>
<el-container>
<el-aside class="layout-aside" width="200px">
<el-menu default-active="1" class="el-menu-vertical">
<el-menu-item index="1">首页</el-menu-item>
<el-menu-item index="2">用户管理</el-menu-item>
<el-menu-item index="3">系统设置</el-menu-item>
</el-menu>
</el-aside>
<el-main class="layout-main">
<div class="content-wrapper">
主要内容区域
</div>
</el-main>
</el-container>
<el-footer class="layout-footer">
© 2024 管理系统. All rights reserved.
</el-footer>
</el-container>
</template>
<style>
.layout-container {
height: 100vh;
}
.layout-header {
background-color: #409EFF;
color: white;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px;
}
.layout-aside {
background-color: #304156;
}
.layout-main {
background-color: #f0f2f5;
padding: 20px;
}
.layout-footer {
background-color: #f5f5f5;
text-align: center;
color: #666;
}
.content-wrapper {
background-color: white;
padding: 20px;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
</style>
1.4 布局容器的嵌套使用
vue
<template>
<el-container>
<el-header>Header</el-header>
<el-container>
<el-aside width="200px">Aside</el-aside>
<el-container>
<el-main>Main</el-main>
<el-footer>Footer</el-footer>
</el-container>
</el-container>
</el-container>
</template>
2. 实际应用示例
2.1 响应式侧边栏
vue
<template>
<el-container class="app-container">
<el-header class="app-header">
<el-button
@click="toggleAside"
:icon="isCollapse ? 'Expand' : 'Fold'"
circle
/>
<span class="title">管理后台</span>
</el-header>
<el-container>
<el-aside
class="app-aside"
:width="isCollapse ? '64px' : '200px'"
>
<el-menu
:collapse="isCollapse"
:collapse-transition="false"
class="sidebar-menu"
>
<el-menu-item index="1">
<el-icon><House /></el-icon>
<span>首页</span>
</el-menu-item>
<el-menu-item index="2">
<el-icon><User /></el-icon>
<span>用户</span>
</el-menu-item>
</el-menu>
</el-aside>
<el-main class="app-main">
<div class="content">
主要内容区域
</div>
</el-main>
</el-container>
</el-container>
</template>
<script setup>
import { ref } from 'vue'
import { House, User } from '@element-plus/icons-vue'
const isCollapse = ref(false)
const toggleAside = () => {
isCollapse.value = !isCollapse.value
}
</script>
<style>
.app-container {
height: 100vh;
}
.app-header {
background-color: #409EFF;
color: white;
display: flex;
align-items: center;
gap: 15px;
padding: 0 20px;
}
.app-aside {
background-color: #304156;
transition: width 0.3s;
}
.sidebar-menu {
border-right: none;
background-color: #304156;
}
.app-main {
background-color: #f0f2f5;
padding: 20px;
}
.content {
background-color: white;
padding: 20px;
border-radius: 4px;
min-height: calc(100vh - 140px);
}
</style>
实践练习
练习1:基础布局
创建一个包含头部、侧边栏、主内容区和底部的基础布局。
练习2:可收缩侧边栏
实现一个可以通过按钮控制收缩/展开的侧边栏布局。
练习3:多级嵌套布局
创建一个复杂的嵌套布局,包含多个容器的组合使用。
设计原则
- 语义化:使用合适的容器组件表达页面结构
- 一致性:保持布局的一致性和规范性
- 响应式:考虑不同屏幕尺寸的适配
- 可维护性:结构清晰,易于维护和扩展
学习资源
作业
- 基础作业:创建一个包含所有容器组件的完整布局
- 进阶作业:实现一个带有动画效果的可收缩侧边栏
- 挑战作业:设计一个适配移动端的响应式布局
总结
Container 布局容器是构建现代 Web 应用界面的基础,通过合理使用这些组件,可以快速搭建出结构清晰、功能完善的页面布局。掌握这些基础组件的使用方法,为后续的复杂界面开发打下坚实基础。
学习日期: ___________ 完成状态: ___________ 学习笔记:
遇到的问题:
解决方案: