目录

3.使用ElementUI搭建侧边栏及顶部栏

3.使用ElementUI搭建侧边栏及顶部栏

1. 安装ElementUI

ElementUI是基于 Vue 2.0 的桌面端组件库。使用之前,需要在项目文件夹中安装ElementUI,在终端中输入以下命令,进行安装。

npm i element-ui -S

并在main.js中引入ElementUI

https://i-blog.csdnimg.cn/direct/74c47fe0d80b4ff9901c66c273c990a8.png

2. 使用elmentUI组件进行页面布局

2.1 清空原有页面样式

App.vue

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

HomeView.vue

<template>
  <div class="home">
  </div>
</template>
<script>

  export default {
    name: 'HomeView',
  }
</script>

Aboutview.vue

<template>
  <div class="about">
  </div>
</template>

2.2 拷贝elmentUI布局样式到App.vue

在 上找到下面的实例以及对应的代码。

https://i-blog.csdnimg.cn/direct/353bf5afebad45a99f4beed97964ac17.png

<el-container style="height: 500px; border: 1px solid #eee">
  <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
    <el-menu :default-openeds="['1', '3']">
      <el-submenu index="1">
        <template slot="title"><i class="el-icon-message"></i>导航一</template>
        <el-menu-item-group>
          <template slot="title">分组一</template>
          <el-menu-item index="1-1">选项1</el-menu-item>
          <el-menu-item index="1-2">选项2</el-menu-item>
        </el-menu-item-group>
        <el-menu-item-group title="分组2">
          <el-menu-item index="1-3">选项3</el-menu-item>
        </el-menu-item-group>
        <el-submenu index="1-4">
          <template slot="title">选项4</template>
          <el-menu-item index="1-4-1">选项4-1</el-menu-item>
        </el-submenu>
      </el-submenu>
      <el-submenu index="2">
        <template slot="title"><i class="el-icon-menu"></i>导航二</template>
        <el-menu-item-group>
          <template slot="title">分组一</template>
          <el-menu-item index="2-1">选项1</el-menu-item>
          <el-menu-item index="2-2">选项2</el-menu-item>
        </el-menu-item-group>
        <el-menu-item-group title="分组2">
          <el-menu-item index="2-3">选项3</el-menu-item>
        </el-menu-item-group>
        <el-submenu index="2-4">
          <template slot="title">选项4</template>
          <el-menu-item index="2-4-1">选项4-1</el-menu-item>
        </el-submenu>
      </el-submenu>
      <el-submenu index="3">
        <template slot="title"><i class="el-icon-setting"></i>导航三</template>
        <el-menu-item-group>
          <template slot="title">分组一</template>
          <el-menu-item index="3-1">选项1</el-menu-item>
          <el-menu-item index="3-2">选项2</el-menu-item>
        </el-menu-item-group>
        <el-menu-item-group title="分组2">
          <el-menu-item index="3-3">选项3</el-menu-item>
        </el-menu-item-group>
        <el-submenu index="3-4">
          <template slot="title">选项4</template>
          <el-menu-item index="3-4-1">选项4-1</el-menu-item>
        </el-submenu>
      </el-submenu>
    </el-menu>
  </el-aside>
  
  <el-container>
    <el-header style="text-align: right; font-size: 12px">
      <el-dropdown>
        <i class="el-icon-setting" style="margin-right: 15px"></i>
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item>查看</el-dropdown-item>
          <el-dropdown-item>新增</el-dropdown-item>
          <el-dropdown-item>删除</el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
      <span>王小虎</span>
    </el-header>
    
    <el-main>
      <el-table :data="tableData">
        <el-table-column prop="date" label="日期" width="140">
        </el-table-column>
        <el-table-column prop="name" label="姓名" width="120">
        </el-table-column>
        <el-table-column prop="address" label="地址">
        </el-table-column>
      </el-table>
    </el-main>
  </el-container>
</el-container>


<style>
  .el-header {
    background-color: #B3C0D1;
    color: #333;
    line-height: 60px;
  }
  
  .el-aside {
    color: #333;
  }
</style>

<script>
  export default {
    data() {
      const item = {
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
      };
      return {
        tableData: Array(20).fill(item)
      }
    }
  };
</script>

**注意:**把代码放在的上面。

https://i-blog.csdnimg.cn/direct/f0b7572361c3455cbfa2a0206cb23a54.png

运行样式效果如下:

https://i-blog.csdnimg.cn/direct/d9fd1ef2f6b1416185a9b886742a39eb.png

2.3 创建全局样式文件并引入

2.3.1 创建global.css文件

上面的样式与浏览器有间隙,需要创建一个global.css用于写全局样式。截图如下:

https://i-blog.csdnimg.cn/direct/467c773c6ae542ad95f4b7535ac97119.png

global.css代码如下:

body {
  /*设置距离屏幕的边距*/
  margin: 0;
  padding: 0;
  /*    隐藏溢出 清除浮动*/
  overflow: hidden;
}
/*把所有的元素变成盒状模型:应用“box-sizing: border-box;”样式后,盒子border和padding的参数值是被包含在width和height之内的。*/
* {
  /*外边距不会额外占用1px的像素*/
  box-sizing: border-box;

}

2.3.2 在main.js中引入这个css文件

https://i-blog.csdnimg.cn/direct/122f06b7566a41f98fb57509ea8428d2.png

import '@/assets/global.css'

https://i-blog.csdnimg.cn/direct/d14f6a49887d417aac2642122ca18920.png

2.3.3 调试侧边栏、头部、表格组件样式

(1)去掉默认展开第1和第3个菜单栏的样式(蓝色选中)

https://i-blog.csdnimg.cn/direct/e384fa5545c6467cbb27ef7a347571b1.png

(2)左侧侧边栏向下拉满

添加红框内的代码

https://i-blog.csdnimg.cn/direct/64d245d2e19f417f833cea54aff9eda0.png

2.3.4 更换侧边栏图标(可选)

在 中找到喜欢的图标

https://i-blog.csdnimg.cn/direct/1a6b700517a447bda6796f3f7094e2d3.png

复制图标类名 更换下图红色框框的值

https://i-blog.csdnimg.cn/direct/0c6a8d30b13c45e3928f7a3133fbb911.png

最终样式:

https://i-blog.csdnimg.cn/direct/18f0524a938044e99fb89aaf0d336516.png

最终代码:

App.vue

<template>
  <div>
    <el-container style="height: 500px;">
      <!--      侧边栏-->
      <el-aside  class="m-aside">
        <!--        logo和系统名称-->
        <div class="m-sysName" >
          <img src="@/assets/logo.png" alt="" width="10%">
          <span class="m-nameText">xxx系统</span>
        </div>
        <!--        侧边菜单栏-->
        <el-menu class="el-menu" >
          <el-submenu index="1">
            <template slot="title"><i class="el-icon-user"></i>用户管理</template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title"><i class="el-icon-news"></i>信息管理</template>
            <el-menu-item index="2-1">选项1</el-menu-item>
            <el-menu-item index="2-2">选项2</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title"><i class="el-icon-set-up"></i>系统设置</template>
            <el-menu-item index="3-1">选项1</el-menu-item>
            <el-menu-item index="3-2">选项2</el-menu-item>
          </el-submenu>
        </el-menu>
      </el-aside>
      <!--      右侧-->
      <el-container class="right-container">
        <!--        顶部菜单栏-->
        <el-header class="top-header">
          <img src="@/assets/avtar.jpg" alt="" style="width: 40px;border-radius: 50%;margin-right: 10px;">
          <span style="color: #4c5a73;font-weight: bold;font-size: 14px;margin-right: 20px">王小虎</span>
          <el-dropdown>
            <i class="el-icon-setting" style="margin-right: 15px"></i>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item>个人中心</el-dropdown-item>
              <el-dropdown-item>退出登录</el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>

        </el-header>
        <!--表单-->
        <el-main >
          <el-table :data="tableData">
            <el-table-column prop="date" label="日期" width="140">
            </el-table-column>
            <el-table-column prop="name" label="姓名" width="120">
            </el-table-column>
            <el-table-column prop="address" label="地址">
            </el-table-column>
          </el-table>
        </el-main>
      </el-container>
    </el-container>
    <router-view/>
  </div>
</template>

<script>
  export default {
    data() {
      const item = {
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
      };
      return {
        tableData: Array(20).fill(item)
      }
    }
  };
</script>

manager.css

/*左侧边栏*/
.m-aside{
  width:270px;
  background-color: #39465C;
  overflow: hidden;
  min-height: 100vh;
}
/*侧边栏上面logo*/
.m-sysName{
  height:70px;
  display:flex;
  align-items: center;
  padding-left: 20px;
  border-bottom: 1px solid #4c5a73;
}
/*侧边栏上面的文字*/
.m-nameText{
  color: #e4e7e6;
  margin-left: 10px;
  font-size: 18px;
  font-weight: bold;
}
/*侧边栏菜单栏*/
.el-menu{
  background-color: #39465C;
  border-right:none !important;
}
/*头部栏样式*/
.el-header {
  background-color: #ffffff;
  border-bottom: 1px solid gainsboro;
  color: #333;
  height: 70px !important;
  line-height: 70px;
}
/* 右侧背景颜色*/
.right-container{
  background-color: #EFF3F6;
  height: 100vh;
}
/*顶部居中*/
.top-header{
  font-size: 12px;
  /*设置垂直居中 先display:flex;在设置垂直居中,水平居右*/
  display: flex;
  align-items: center;
  justify-content: right;
}
/*侧边栏菜单一级字体颜色*/
.el-submenu__title{
  color: #e9e9e9;
}
/*侧边栏菜单悬浮背景颜色*/
.el-menu-item:hover, .el-submenu__title:hover {
  background: rgba(92, 113, 147, 0.24);

}
/*侧边栏二级字体颜色*/
.el-menu-item {
  color: #e9e9e9;
}
/*二级菜单选中背景和颜色设置*/
.el-menu-item.is-active {
  color: #11cfd2;
  font-size: 14px;
  background: rgba(92, 113, 147, 0.24);
}