1、新建一個vue項目
2、安裝element-ui
進入到該項目目錄,輸入:npm install --save element-ui
之后可以在package.json中查看是否下載了相關依賴
最后在main.js中加入:
import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI)
3、引入相關模板
去到element官網,找到布局容器,選擇一個模板將其內容替換App.vue中的內容,例如:
<template> <div id="app"> <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> </div> </template> <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>
此時頁面效果:
element-ui相關標簽說明:
el-container:構建整個頁面框架
el-aside:構建左側菜單
el-menu:左側菜單內容,常用屬性:
- :default-openeds:默認展開的菜單,通過index屬性進行設置。例如在el-submenu中的index='1',如果在這里設置default-openeds='["1"]',說明默認打開的index=1的子菜單。
- :default-active:默認選中。可以這么設置:default-active=" '1-1' "。
el-submenu:可展開的菜單,常用屬性:
- index:菜單的下標,文本類型,不能是數字類型。
template:對應el-submenu的菜單名,可以在其設置菜單圖標,通過i標簽的class屬性。
el-menu-item:菜單的子節點,不可再展開。index屬性值為文本類型。
<template> <div id="app"> <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']" :default-active="'1-1'"> <el-submenu index="1"> <template slot="title"> <i class="el-icon-message"></i>導航一</template> <el-menu-item index="1-1">選項1</el-menu-item> <el-menu-item index="1-2">選項2</el-menu-item> <el-submenu index="1-3"> <template slot="title">選項3</template> <el-menu-item index="1-3-1">選項1-3-1</el-menu-item> <el-menu-item index="1-3-2">選項1-3-2</el-menu-item> </el-submenu> </el-submenu> <el-submenu index="2"> <template slot="title"> <i class="el-icon-menu"></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-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> </div> </template> <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>
當前效果:
4、動態顯示菜單
在views下新建幾個頁面,PageOne.vue、PageTwo.vue、PageThree.vue、PageFour.vue,里面內容基本相同。比如PageOne就是
<template> <div> <h1>這是page1</h1> </div> </template> <script> </script> <style scoped> </style>
接下來要了解vue的整體圖:
藍色部分是vue服務,紅色部分是入口,也就是App.vue,橙色部分是我們的頁面。我們要將一開始的element代碼,轉移到黃色區域里面,不然的話會出現紅色和橙色區域里都會出現菜單欄,因為我們的頁面是從主入口進入的。
在views下新建一個Index.vue
<template> <div> <el-container style="height: 500px; border: 1px solid #eee"> <el-aside width="200px" style="background-color: rgb(238, 241, 246)"> <el-menu :default-openeds="['0','1']" :router="$route"> <el-submenu v-for="(item,index) in $router.options.routes" :key="index" :index="index+''"> <template slot="title"> <i class="el-icon-message"></i>{{item.name}}</template> <el-menu-item v-for="(item2, index2) in item.children" :key="index2" :index="item2.path" :class="$route.path==item2.path?'is-active':''">{{item2.name}}</el-menu-item> </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> <router-view></router-view> </el-main> </el-container> </el-container> </div> </template> <script> </script> <style scoped> </style>
使用v-for遍歷出一級菜單,再使用v-for遍歷二級菜單。首先要給el-menu加上:router屬性,然后利用router-view進行渲染,最后要實現點擊不同菜單顯示不同界面要設置::index="item2.path"。為了點擊時對菜單進行高亮,如果點擊的當前頁面和菜單對應,就加上class="is-active"。
router/index.js
import Vue from 'vue' import VueRouter from 'vue-router' import Home from '../views/Home.vue' import Test from '../views/Test.vue' import PageOne from '../views/PageOne.vue' import PageTwo from '../views/PageTwo.vue' import PageThree from '../views/PageThree.vue' import PageFour from '../views/PageFour.vue' import Index from '../views/Index.vue' Vue.use(VueRouter) const routes = [ { path: "/", name: "導航一", component: Index, redirect: "/pageOne", children: [ { path: '/pageOne', name: '頁面一', component: PageOne, }, { path: '/pageTwo', name: '頁面二', component: PageTwo, }, ] }, { path: "/navigation", name: "導航二", component: Index, children: [ { path: '/pageThree', name: '頁面三', component: PageThree, }, { path: '/pageFour', name: '頁面四', component: PageFour, }, ] }, ] const router = new VueRouter({ mode: 'history', base: process.env.BASE_URL, routes }) export default router
這里的redirect用於直接跳轉到PageOne.vue。
App.vue
<template> <div id="app"> <router-view></router-view> </div> </template> <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>
vue中的模板可以用<router-view></router-view>進行替換。這里替換了兩次,一次是菜單欄替換App.vue中的,另一次是PageOne等頁面替換Index.vue中的。
最后結果:啟動服務器之后會直接到第一個頁面。
點擊其他頁面會顯示其他頁面的信息,並對該菜單進行高亮: