03-首页(布局)
1.1-配置路由
1.2-使用el-container搭建页面整体结构(可CV)
-
el-container:element.eleme.cn/#/zh-CN/com…
- 版心组件
<template>
<!-- 版心 -->
<el-container>
<!-- 1.左侧菜单栏 -->
<el-aside width="200px">Aside</el-aside>
<!-- 2.右侧内容 -->
<el-container>
<!-- 2.1 右侧顶部栏 -->
<el-header>Header</el-header>
<!-- 2.2 右侧内容 -->
<el-main>Main</el-main>
<!-- 2.3 右侧底部 -->
<el-footer>© www.itheima.com - 黑马程序员</el-footer>
</el-container>
</el-container>
</template>
<script>
export default {
name: "Main",
data() {
return {
};
}
};
</script>
<style lang="less" scoped>
.main-container {
height: 100%;
.el-aside {
background-color: #23262e;
}
.el-header {
padding: 0;
display: flex;
justify-content: space-between;
}
.el-main {
overflow-y: scroll;
height: 0;
background-color: #f2f2f2;
}
.el-footer {
background-color: #eee;
font-size: 12px;
display: flex;
justify-content: center;
align-items: center;
}
}
.avatar {
border-radius: 50%;
width: 35px;
height: 35px;
background-color: #fff;
margin-right: 10px;
object-fit: cover;
}
//右侧样式
.el-header {
.logo {
height: 45px;
width: 150px;
padding: 8px 0px;
user-select: none;
text-align: center;
background: url('@/assets/images/logo.png')
center center / 100px no-repeat rgb(85, 85, 85);
border-radius: 3px;
margin-left: 15px;
}
}
// 左侧边栏用户信息区域
.user-box {
height: 70px;
display: flex;
justify-content: center;
align-items: center;
border-top: 1px solid #000;
border-bottom: 1px solid #000;
user-select: none;
img {
width: 35px;
height: 35px;
border-radius: 50%;
background-color: #fff;
margin-right: 15px;
object-fit: cover;
}
span {
color: white;
font-size: 12px;
}
}
// 侧边栏菜单的样式
.el-aside {
.el-submenu,
.el-menu-item {
width: 200px;
user-select: none;
}
}
</style>
1.3-使用el-menu搭建左侧导航栏
-
el-menu:element.eleme.cn/#/zh-CN/com…
- 导航栏菜单栏组件
-
el-menu
-
default-active
- 默认选中哪一个菜单, 写el-menu-item的index属性值
-
class="el-menu-vertical-demo"
- 默认类名,官方CV
-
background-color="#23262E"
- 背景颜色
-
text-color="#fff"
- 文字颜色
-
active-text-color="#409EFF"
- 选中文本颜色
-
unique-opened
- 是否只保持一个子菜单展开
- 只要写了这个属性,当你点开一个子菜单的时候,另一个子菜单就会被自动折叠
-
router
- 是否启用路由模式
- 只要写了这个属性,那么菜单栏的index属性就会作为路由的路径跳转(相当于之前router-link的to属性)
-
<!-- 1.左侧菜单栏 -->
<el-aside width="200px">
<div class="user-box">
<img src="@/assets/images/logo.png" alt="" />
<span>欢迎 </span>
</div>
<!-- 左侧菜单 -->
<el-menu
default-active="1"
class="el-menu-vertical-demo"
background-color="#23262E"
text-color="#fff"
active-text-color="#409EFF"
unique-opened
router
>
<!-- 一级菜单 -->
<el-menu-item><i class="el-icon-s-home"></i>首页</el-menu-item>
<!-- 一级菜单 + 二级菜单-->
<el-submenu index="1">
<template #title>
<i></i>
<span>文章管理</span>
</template>
<!-- 循环渲染“二级菜单” -->
<el-menu-item index="1-1"> <i></i> 文章分类</el-menu-item>
<el-menu-item index="1-2"> <i></i> 文章列表</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
1.4-搭建右侧顶部栏
-
el-menu
-
mode="horizontal"
- 垂直排列
-
<!-- 2.1 右侧顶部栏 -->
<el-header>
<!-- 右侧logo -->
<div class="logo"></div>
<!-- 右侧菜单 -->
<el-menu
class="el-menu-top"
mode="horizontal"
text-color="#5c5c5c"
active-text-color="#409EFF"
>
<el-submenu index="1">
<template slot="title">
<!-- 头像 -->
<img src="@/assets/logo.png" alt="" class="avatar" />
<span>个人中心</span>
</template>
<el-menu-item index="1-1"
><i class="el-icon-s-operation"></i>基本资料</el-menu-item
>
<el-menu-item index="1-2"
><i class="el-icon-camera"></i>更换头像</el-menu-item
>
<el-menu-item index="1-3"
><i class="el-icon-key"></i>重置密码</el-menu-item
>
</el-submenu>
<el-menu-item index="2"
><i class="el-icon-switch-button"></i>退出</el-menu-item
>
</el-menu>
</el-header>
1.5-完整代码
<template>
<!-- 版心 -->
<el-container class="main-container">
<!-- 1.左侧菜单栏 -->
<el-aside width="200px">
<div class="user-box">
<img src="@/assets/images/logo.png" alt="" />
<span>欢迎 </span>
</div>
<!-- 左侧菜单 -->
<el-menu
default-active="1"
class="el-menu-vertical-demo"
background-color="#23262E"
text-color="#fff"
active-text-color="#409EFF"
unique-opened
router
>
<!-- 一级菜单 -->
<el-menu-item><i class="el-icon-s-home"></i>首页</el-menu-item>
<!-- 一级菜单 + 二级菜单-->
<el-submenu index="1">
<template #title>
<i></i>
<span>文章管理</span>
</template>
<!-- 循环渲染“二级菜单” -->
<el-menu-item index="1-1"> <i></i> 文章分类</el-menu-item>
<el-menu-item index="1-2"> <i></i> 文章列表</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
<!-- 2.右侧内容 -->
<el-container>
<!-- 2.1 右侧顶部栏 -->
<el-header>
<!-- 右侧logo -->
<div class="logo"></div>
<!-- 右侧菜单 -->
<el-menu
mode="horizontal"
text-color="#5c5c5c"
active-text-color="#409EFF"
>
<el-submenu index="1">
<template slot="title">
<!-- 头像 -->
<img src="@/assets/logo.png" alt="" class="avatar" />
<span>个人中心</span>
</template>
<el-menu-item index="1-1"
><i class="el-icon-s-operation"></i>基本资料</el-menu-item
>
<el-menu-item index="1-2"
><i class="el-icon-camera"></i>更换头像</el-menu-item
>
<el-menu-item index="1-3"
><i class="el-icon-key"></i>重置密码</el-menu-item
>
</el-submenu>
<el-menu-item index="2"
><i class="el-icon-switch-button"></i>退出</el-menu-item
>
</el-menu>
</el-header>
<!-- 2.2 右侧内容 -->
<el-main>Main</el-main>
<!-- 2.3 右侧底部 -->
<el-footer>© www.itheima.com - 黑马程序员</el-footer>
</el-container>
</el-container>
</template>
<script>
export default {
name: "Main",
data() {
return {};
}
};
</script>
<style lang="less" scoped>
.main-container {
height: 100%;
.el-aside {
background-color: #23262e;
}
.el-header {
padding: 0;
display: flex;
justify-content: space-between;
}
.el-main {
overflow-y: scroll;
height: 0;
background-color: #f2f2f2;
}
.el-footer {
background-color: #eee;
font-size: 12px;
display: flex;
justify-content: center;
align-items: center;
}
}
.avatar {
border-radius: 50%;
width: 35px;
height: 35px;
background-color: #fff;
margin-right: 10px;
object-fit: cover;
}
//右侧样式
.el-header {
.logo {
height: 45px;
width: 150px;
padding: 8px 0px;
user-select: none;
text-align: center;
background: url('@/assets/images/logo.png')
center center / 100px no-repeat rgb(85, 85, 85);
border-radius: 3px;
margin-left: 15px;
}
}
// 左侧边栏用户信息区域
.user-box {
height: 70px;
display: flex;
justify-content: center;
align-items: center;
border-top: 1px solid #000;
border-bottom: 1px solid #000;
user-select: none;
img {
width: 35px;
height: 35px;
border-radius: 50%;
background-color: #fff;
margin-right: 15px;
object-fit: cover;
}
span {
color: white;
font-size: 12px;
}
}
// 侧边栏菜单的样式
.el-aside {
.el-submenu,
.el-menu-item {
width: 200px;
user-select: none;
}
}
</style>