学习SpringBoot+Vue前后端分离项目,原项目GitHub地址,项目作者江雨一点雨博客。
Home页代码 element-ui官网有布局代码
<template>
<div>
//element-ui Container 布局容器
<el-container>
<el-header class="homeHeader">
<div class="title">
微人事
</div>
//element-ui Dropdown下拉菜单 菜单项点击事件
<el-dropdown class="userInfo" @command="commandHandler">
<span class="el-dropdown-link">
{{user.name}}//sessionStorage中存放的用户信息
<i><img :src="user.userface" alt=""></i>
</span>
<el-dropdown-menu slot="dropdown">
//dropdown-item中的command对应commandHandler中的cmd
<el-dropdown-item command="userInfo">个人中心</el-dropdown-item>
<el-dropdown-item command="setting">设置</el-dropdown-item>
<el-dropdown-item command="logout" divided>注销登录</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-header>
<el-container>
<el-aside width="200px">
//NavMenu导航菜单 侧栏 unique-opened:保持一个子菜单的展开
<el-menu router unique-opened>
//遍历router/index.js中的routes数组
//在routes中给Login和Home添加hidden:true,不被渲染
<el-submenu :index="index+''" v-for="(item,index) in this.$router.options.routes" v-if="!item.hidden" :key="index">
<template slot="title">
<i style="color: cornflowerblue;margin-right: 8px" :class="item.iconCls"></i>
<span>{{item.name}}</span>
</template>
//children为子菜单
<el-menu-item :index="child.path" v-for="(child,indexj) in item.children" :key="indexj">{{child.name}}</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
<el-main>
<router-view class="homeRouterView"/>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
export default {
name: "Home",
data(){
return{
//读取存在sessionStorge中的用户信息,并转化为JSON对象
user:JSON.parse(window.sessionStorage.getItem("user"))
}
},
methods:{
commandHandler(cmd){
if (cmd == 'logout'){
//element-ui MessageBox消息弹框中的确认消息
this.$confirm('此操作将注销登录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.getRequest("/logout");
window.sessionStorage.removeItem("user");//清除用户信息
this.$router.replace("/");//跳转登录页
}).catch(() => {
this.$message({
type: 'info',
message: '已取消操作'
});
});
}
}
}
}
</script>
<style>
//样式 对应各标签内的class
.homeRouterView{
margin-top: 10px; //上外边距 就是离上边多远的意思
}
.homeHeader{
background-color: #3f72ff; //背景色
display: flex;//布局方式为flex:弹性布局
align-items: center;//在交叉轴上的对齐方式为center:交叉轴的中点对齐。
justify-content: space-between;//在主轴上的对齐方式为space-between:两端对齐,项目之间的间隔都相等。
padding: 0px 15px;//内边距 默认依次是上右下左 三个值为上右下 两个值为上下和左右 单独一个值就是全部
box-sizing: border-box;//为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制
}
.homeHeader .title {
font-size: 30px;//字体大小
font-family: 微软雅黑;//用什么字体
color: aliceblue;//颜色
}
.homeHeader .userInfo{
cursor: pointer;//光标为一只手的模样
}
.el-dropdown-link img{
width: 48px;
height: 48px;
border-radius: 24px;//圆角边框 四个角为24px
margin-left: 8px;//左外边距
}
.el-dropdown-link{
display: flex;
align-items: center;
}
</style>
代码中有一段代玛是给菜单项加图标的
<i style="color: cornflowerblue;margin-right: 8px" :class="item.iconCls"></i>
需引入
import 'font-awesome/css/font-awesome.min.css'