Vue和Element基礎使用,綜合案例學生列表實現

知識點梳理

課堂講義

一、Vue 快速入門

1.一、Vue的介紹

  • Vue是一套構建用戶界面的漸進式前端框架。css

  • 只關注視圖層,而且很是容易學習,還能夠很方便的與其它庫或已有項目整合。html

  • 經過儘量簡單的API來實現響應數據的綁定和組合的視圖組件。前端

  • 特色 易用:在有HTMLCSSJavaScript的基礎上,快速上手。 靈活:簡單小巧的核心,漸進式技術棧,足以應付任何規模的應用。 性能:20kbmin+gzip運行大小、超快虛擬DOM、最省心的優化。vue

1.二、Vue的快速入門

  • 開發步驟程序員

  1. 下載和引入vue.js文件。element-ui

  2. 編寫入門程序。 視圖:負責頁面渲染,主要由HTML+CSS構成。 腳本:負責業務數據模型(Model)以及數據的處理邏輯。前端框架

  • 代碼實現框架

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>快速入門</title>
    </head>
    <body>
       <!-- 視圖 -->
       <div id="div">
          {{msg}}
       </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
       // 腳本
       new Vue({
           el:"#div",
           data:{
               msg:"Hello Vue"
          }
      });
    </script>
    </html>

1.三、Vue快速入門詳解

  • Vue 核心對象:每個 Vue 程序都是從一個 Vue 核心對象開始的。ide

    let vm = new Vue({
    選項列表;
    });
  • 選項列表 el選項:用於接收穫取到頁面中的元素。(根據經常使用選擇器獲取)。 data選項:用於保存當前Vue對象中的數據。在視圖中聲明的變量須要在此處賦值。 methods選項:用於定義方法。方法能夠直接經過對象名調用,this表明當前Vue對象。工具

  • 數據綁定 在視圖部分獲取腳本部分的數據。 {{變量名}}

1.四、Vue快速入門的升級

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>快速入門升級</title>
</head>
<body>
   <!-- 視圖 -->
   <div id="div">
       <div>姓名:{{name}}</div>
       <div>班級:{{classRoom}}</div>
       <button onclick="hi()">打招呼</button>
       <button onclick="update()">修改班級</button>
   </div>
</body>
<script src="js/vue.js"></script>
<script>
   // 腳本
   let vm = new Vue({// vm實例化時,會將el和data選項變爲vm的屬性,語法:$屬性名
       el:"#div",// element:元素,將id爲div的元素與vue實例對象進行綁定,綁定以後,div內部就可使用vue定義的數據
       data:{
           name:"張三",
           classRoom:"黑馬程序員"
      },
       methods:{
           study(){
               alert(this.name + "正在" + this.classRoom + "好好學習!");
          }
      }
  });

   //定義打招呼方法
   function hi(){
       vm.study();
  }

   //定義修改班級
   function update(){
       vm.classRoom = "傳智播客";
  }
</script>
</html>

1.五、Vue小結

  • Vue是一套構建用戶界面的漸進式前端框架。

  • Vue的程序包含視圖和腳本兩個核心部分。

  • 腳本部分

    • Vue核心對象。

    • 選項列表

      • el:接收穫取的元素。

      • data:保存數據。

      • methods:定義方法。

  • 視圖部分

    • 數據綁定:{{變量名}}

二、Vue 經常使用指令

2.一、指令介紹

  • 指令:是帶有 v- 前綴的特殊屬性,不一樣指令具備不一樣含義。例如 v-html,v-if,v-for。

  • 使用指令時,一般編寫在標籤的屬性上,值可使用 JS 的表達式。

  • 指令:vue框架定義的,一些標籤的自定義的屬性

  • 經常使用指令

     

     

2.二、文本插值

  • v-html:把文本解析爲 HTML 代碼。

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>文本插值</title>
    </head>
    <body>
       <div id="div">
           <div>{{msg}}</div>
           <div v-html="msg"></div>
       </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
       new Vue({
           el:"#div",
           data:{
               msg:"<b>Hello Vue</b>"
          }
      });
    </script>
    </html>

2.三、綁定屬性 ***

  • v-bind:爲 HTML 標籤綁定屬性值。

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>綁定屬性</title>
       <style>
           .my{
               border: 1px solid red;
          }
       </style>
    </head>
    <body>
       <div id="div">
           <a v-bind:href="url">百度一下</a>
           <br>
           <a :href="url">百度一下</a>
           <br>
           <div :class="cls">我是div</div>
       </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
       new Vue({
           el:"#div",
           data:{
               url:"https://www.baidu.com",
               cls:"my"
          }
      });
    </script>
    </html>

2.四、條件渲染 ***

  • v-if:條件性的渲染某元素,斷定爲真時渲染,不然不渲染。

  • v-else:條件性的渲染。

  • v-else-if:條件性的渲染。

  • v-show:根據條件展現某元素,區別在於切換的是display屬性的值。

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>條件渲染</title>
    </head>
    <body>
       <div id="div">
           <!-- 判斷num的值,對3取餘 餘數爲0顯示div1 餘數爲1顯示div2 餘數爲2顯示div3 -->
           <div v-if="num % 3 == 0">div1</div>
           <div v-else-if="num % 3 == 1">div2</div>
           <div v-else="num % 3 == 2">div3</div>

           <div v-show="flag">div4</div>
       </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
       new Vue({
           el:"#div",
           data:{
               num:1,
               flag:false
          }
      });
    </script>
    </html>

2.五、列表渲染 ***

  • v-for:列表渲染,遍歷容器的元素或者對象的屬性。

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>列表渲染</title>
    </head>
    <body>
       <div id="div">
           <ul>
               <li v-for="(name,index) in names">
                  {{name}}{{index}}
               </li>
               <li v-for="(value,key) in student">
                  {{value}}{{key}}
               </li>
           </ul>
       </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
       new Vue({
           el:"#div",
           data:{
               names:["張三","李四","王五"],
               student:{
                   name:"張三",
                   age:23
              }
          }
      });
    </script>
    </html>

2.六、事件綁定 ***

  • v-on:爲 HTML 標籤綁定事件。

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>事件綁定</title>
    </head>
    <body>
       <div id="div">
           <div>{{name}}</div>
           <button v-on:click="change()">改變div的內容</button>
           <button v-on:dblclick="change()">改變div的內容</button>

           <button @click="change()" >改變div的內容</button>
       </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
       new Vue({
           el:"#div",
           data:{
               name:"黑馬程序員"
          },
           methods:{
               change(){
                   this.name = "傳智播客"
              }
          }
      });
    </script>
    </html>

2.七、表單綁定 ***

  • 表單綁定 v-model:在表單元素上建立雙向數據綁定。

  • 雙向數據綁定 更新data數據,頁面中的數據也會更新。 更新頁面數據,data數據也會更新。

  • MVVM模型(ModelViewViewModel):是MVC模式的改進版 在前端頁面中,JS對象表示Model,頁面表示View,二者作到了最大限度的分離。 將Model和View關聯起來的就是ViewModel,它是橋樑。 ViewModel負責把Model的數據同步到View顯示出來,還負責把View修改的數據同步回Model。

     

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>表單綁定</title>
    </head>
    <body>
       <div id="div">
           <!-- v-html {{}} 單向數據綁定:數據變化會影響界面 -->
           <div v-html="username"></div>
           <form autocomplete="off">
                <!-- v-model :雙向數據綁定,數據變化會影響界面,用戶修改界面內容會影響數據
                    v-model 只能用在表單控件中
               -->
              姓名:<input type="text" name="username" v-model="username">
               <br>
              年齡:<input type="number" name="age" v-model="age">
           </form>
       </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
      let vm = new Vue({
           el:"#div",
           data:{
               username:"張三",
               age:23
          }
      });
    </script>
    </html>

2.八、小結

  • 指令:是帶有v-前綴的特殊屬性,不一樣指令具備不一樣含義。

  • 文本插值 v-html:把文本解析爲HTML代碼。

  • 綁定屬性 v-bind:爲HTML標籤綁定屬性值。

  • 條件渲染 v-if:條件性的渲染某元素,斷定爲真時渲染,不然不渲染。 v-else:條件性的渲染。 v-else-if:條件性的渲染。 v-show:根據條件展現某元素,區別在於切換的是display屬性的值。

  • 列表渲染 v-for:列表渲染,遍歷容器的元素或者對象的屬性。

  • 事件綁定 v-on:爲HTML標籤綁定事件。

  • 表單綁定 v-model:在表單元素上建立雙向數據綁定。

三、Element 基本使用

3.一、Element介紹

  • Element:網站快速成型工具。是餓了麼公司前端開發團隊提供的一套基於Vue的網站組件庫。

  • 使用Element前提必需要有Vue。

  • 組件:組成網頁的部件,例如超連接、按鈕、圖片、表格等等~

  • Element官網:https://element.eleme.cn/#/zh-CN

  • 本身完成的按鈕

     

     

  • Element 提供的按鈕

     

     

3.二、Element快速入門

  • 開發步驟

    1. 下載 Element 核心庫。

    2. 引入 Element 樣式文件。

    3. 引入 Vue 核心 js 文件。

    4. 引入 Element 核心 js 文件。

    5. 編寫按鈕標籤。

    6. 經過 Vue 核心對象加載元素。

  • 代碼實現

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>快速入門</title>
       <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
       <script src="js/vue.js"></script>
       <script src="element-ui/lib/index.js"></script>
    </head>
    <body>
       <button>我是按鈕</button>
       <br>
       <div id="div">
           <el-row>
               <el-button>默認按鈕</el-button>
               <el-button type="primary">主要按鈕</el-button>
               <el-button type="success">成功按鈕</el-button>
               <el-button type="info">信息按鈕</el-button>
               <el-button type="warning">警告按鈕</el-button>
               <el-button type="danger">危險按鈕</el-button>
             </el-row>
             <br>
             <el-row>
               <el-button plain>樸素按鈕</el-button>
               <el-button type="primary" plain>主要按鈕</el-button>
               <el-button type="success" plain>成功按鈕</el-button>
               <el-button type="info" plain>信息按鈕</el-button>
               <el-button type="warning" plain>警告按鈕</el-button>
               <el-button type="danger" plain>危險按鈕</el-button>
             </el-row>
             <br>
             <el-row>
               <el-button round>圓角按鈕</el-button>
               <el-button type="primary" round>主要按鈕</el-button>
               <el-button type="success" round>成功按鈕</el-button>
               <el-button type="info" round>信息按鈕</el-button>
               <el-button type="warning" round>警告按鈕</el-button>
               <el-button type="danger" round>危險按鈕</el-button>
             </el-row>
             <br>
             <el-row>
               <el-button icon="el-icon-search" circle></el-button>
               <el-button type="primary" icon="el-icon-edit" circle></el-button>
               <el-button type="success" icon="el-icon-check" circle></el-button>
               <el-button type="info" icon="el-icon-message" circle></el-button>
               <el-button type="warning" icon="el-icon-star-off" circle></el-button>
               <el-button type="danger" icon="el-icon-delete" circle></el-button>
             </el-row>
       </div>
    </body>
    <script>
       new Vue({
           el:"#div"
      });
    </script>
    </html>

3.三、基礎佈局

將頁面分紅最多 24 個部分,自由切分。

 

 

  • 代碼實現

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>基礎佈局</title>
       <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
       <script src="js/vue.js"></script>
       <script src="element-ui/lib/index.js"></script>
       <style>
           .el-row {
               /* 行距爲20px */
               margin-bottom: 20px;
          }
           .bg-purple-dark {
               background: red;
          }
           .bg-purple {
               background: blue;
          }
           .bg-purple-light {
               background: green;
          }
           .grid-content {
               /* 邊框圓潤度 */
               border-radius: 4px;
               /* 行高爲36px */
               min-height: 36px;
          }
         </style>
    </head>
    <body>
       <div id="div">
           <el-row>
               <el-col :span="24"><div class="grid-content bg-purple-dark"></div></el-col>
             </el-row>
             <el-row>
               <el-col :span="12"><div class="grid-content bg-purple"></div></el-col>
               <el-col :span="12"><div class="grid-content bg-purple-light"></div></el-col>
             </el-row>
             <el-row>
               <el-col :span="8"><div class="grid-content bg-purple"></div></el-col>
               <el-col :span="8"><div class="grid-content bg-purple-light"></div></el-col>
               <el-col :span="8"><div class="grid-content bg-purple"></div></el-col>
             </el-row>
             <el-row>
               <el-col :span="6"><div class="grid-content bg-purple"></div></el-col>
               <el-col :span="6"><div class="grid-content bg-purple-light"></div></el-col>
               <el-col :span="6"><div class="grid-content bg-purple"></div></el-col>
               <el-col :span="6"><div class="grid-content bg-purple-light"></div></el-col>
             </el-row>
             <el-row>
               <el-col :span="4"><div class="grid-content bg-purple"></div></el-col>
               <el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col>
               <el-col :span="4"><div class="grid-content bg-purple"></div></el-col>
               <el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col>
               <el-col :span="4"><div class="grid-content bg-purple"></div></el-col>
               <el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col>
             </el-row>
       </div>
    </body>
    <script>
       new Vue({
           el:"#div"
      });
    </script>
    </html>

3.四、容器佈局

將頁面分紅頭部區域、側邊欄區域、主區域、底部區域。

 

 

  • 代碼實現

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>容器佈局</title>
       <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
       <script src="js/vue.js"></script>
       <script src="element-ui/lib/index.js"></script>
       <style>
           .el-header, .el-footer {
               background-color: #d18e66;
               color: #333;
               text-align: center;
               height: 100px;
          }
           .el-aside {
               background-color: #55e658;
               color: #333;
               text-align: center;
               height: 580px;
          }
           .el-main {
               background-color: #5fb1f3;
               color: #333;
               text-align: center;
               height: 520px;
          }
       </style>
    </head>
    <body>
       <div id="div">
           <el-container>
               <el-header>頭部區域</el-header>
               <el-container>
                 <el-aside width="200px">側邊欄區域</el-aside>
                 <el-container>
                   <el-main>主區域</el-main>
                   <el-footer>底部區域</el-footer>
                 </el-container>
               </el-container>
             </el-container>
       </div>
    </body>
    <script>
       new Vue({
           el:"#div"
      });
    </script>
    </html>

3.五、表單組件

由輸入框、下拉列表、單選框、多選框等控件組成,用以收集、校驗、提交數據。

  • 代碼實現

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>表單組件</title>
       <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
       <script src="js/vue.js"></script>
       <script src="element-ui/lib/index.js"></script>
    </head>
    <body>
       <div id="div">
           <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
               <el-form-item label="活動名稱" prop="name">
                 <el-input v-model="ruleForm.name"></el-input>
               </el-form-item>
               <el-form-item label="活動區域" prop="region">
                 <el-select v-model="ruleForm.region" placeholder="請選擇活動區域">
                   <el-option label="區域一" value="shanghai"></el-option>
                   <el-option label="區域二" value="beijing"></el-option>
                 </el-select>
               </el-form-item>
               <el-form-item label="活動時間" required>
                 <el-col :span="11">
                   <el-form-item prop="date1">
                     <el-date-picker type="date" placeholder="選擇日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
                   </el-form-item>
                 </el-col>
                 <el-col class="line" :span="2">-</el-col>
                 <el-col :span="11">
                   <el-form-item prop="date2">
                     <el-time-picker placeholder="選擇時間" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
                   </el-form-item>
                 </el-col>
               </el-form-item>
               <el-form-item label="即時配送" prop="delivery">
                 <el-switch v-model="ruleForm.delivery"></el-switch>
               </el-form-item>
               <el-form-item label="活動性質" prop="type">
                 <el-checkbox-group v-model="ruleForm.type">
                   <el-checkbox label="美食/餐廳線上活動" name="type"></el-checkbox>
                   <el-checkbox label="地推活動" name="type"></el-checkbox>
                   <el-checkbox label="線下主題活動" name="type"></el-checkbox>
                   <el-checkbox label="單純品牌曝光" name="type"></el-checkbox>
                 </el-checkbox-group>
               </el-form-item>
               <el-form-item label="特殊資源" prop="resource">
                 <el-radio-group v-model="ruleForm.resource">
                   <el-radio label="線上品牌商贊助"></el-radio>
                   <el-radio label="線下場地免費"></el-radio>
                 </el-radio-group>
               </el-form-item>
               <el-form-item label="活動形式" prop="desc">
                 <el-input type="textarea" v-model="ruleForm.desc"></el-input>
               </el-form-item>
               <el-form-item>
                 <el-button type="primary" @click="submitForm('ruleForm')">當即建立</el-button>
                 <el-button @click="resetForm('ruleForm')">重置</el-button>
               </el-form-item>
             </el-form>
       </div>
    </body>
    <script>
       new Vue({
           el:"#div",
           data:{
               ruleForm: {
                   name: '',
                   region: '',
                   date1: '',
                   date2: '',
                   delivery: false,
                   type: [],
                   resource: '',
                   desc: ''
                  },
           rules: {
             name: [
              { required: true, message: '請輸入活動名稱', trigger: 'blur' },
              { min: 3, max: 5, message: '長度在 3 到 5 個字符', trigger: 'blur' }
            ],
             region: [
              { required: true, message: '請選擇活動區域', trigger: 'change' }
            ],
             date1: [
              { type: 'date', required: true, message: '請選擇日期', trigger: 'change' }
            ],
             date2: [
              { type: 'date', required: true, message: '請選擇時間', trigger: 'change' }
            ],
             type: [
              { type: 'array', required: true, message: '請至少選擇一個活動性質', trigger: 'change' }
            ],
             resource: [
              { required: true, message: '請選擇活動資源', trigger: 'change' }
            ],
             desc: [
              { required: true, message: '請填寫活動形式', trigger: 'blur' }
            ]
          }
          },
           methods:{
               submitForm(formName) {
                   this.$refs[formName].validate((valid) => {
                   if (valid) {
                       alert('submit!');
                  } else {
                       console.log('error submit!!');
                       return false;
                  }
                  });
              },
               resetForm(formName) {
                   this.$refs[formName].resetFields();
                    // vue實例有一個屬性 $refs , 存儲當前界面中全部帶有ref屬性的標籤的對象
                   // <el-form ref="ruleForm" >   <el-form-item ref="item1"
                   // $refs內部就有一個el-form對象 {"ruleForm":el-form,"item1":el-form-item}  
                   // this.$refs.ruleForm     this.$refs.item1
                   // this.$refs["ruleForm"]     this.$refs["item1"]
              }
          }
      });
    </script>
    </html>

3.六、表格組件

用於展現多條結構相似的數據,可對數據進行編輯、刪除或其餘自定義操做。

  • 代碼實現

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>表格組件</title>
       <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
       <script src="js/vue.js"></script>
       <script src="element-ui/lib/index.js"></script>
    </head>
    <body>
       <div id="div">
           <template>
               <el-table
                 :data="tableData"
                 style="width: 100%">
                 <el-table-column
                   prop="date"
                   label="日期"
                   width="180">
                 </el-table-column>
                 <el-table-column
                   prop="name"
                   label="姓名"
                   width="180">
                 </el-table-column>
                 <el-table-column
                   prop="address"
                   label="地址">
                 </el-table-column>

                 <el-table-column
                   label="操做"
                   width="180">
                   <el-button type="warning">編輯</el-button>
                   <el-button type="danger">刪除</el-button>
                 </el-table-column>
               </el-table>
             </template>
       </div>
    </body>
    <script>
       new Vue({
           el:"#div",
           data:{
               tableData: [{
                   date: '2016-05-02',
                   name: '王小虎',
                   address: '上海市普陀區金沙江路 1518 弄'
              }, {
                   date: '2016-05-04',
                   name: '王小虎',
                   address: '上海市普陀區金沙江路 1517 弄'
              }, {
                   date: '2016-05-01',
                   name: '王小虎',
                   address: '上海市普陀區金沙江路 1519 弄'
              }, {
                   date: '2016-05-03',
                   name: '王小虎',
                   address: '上海市普陀區金沙江路 1516 弄'
              }]
          }
      });
    </script>
    </html>

el-table分析:

 

 

3.七、頂部導航欄組件

 

 

  • 代碼實現

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>頂部導航欄</title>
       <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
       <script src="js/vue.js"></script>
       <script src="element-ui/lib/index.js"></script>
    </head>
    <body>
       <div id="div">
         <el-menu
         :default-active="activeIndex2"
         class="el-menu-demo"
         mode="horizontal"
         @select="handleSelect"
         background-color="#545c64"
         text-color="#fff"
         active-text-color="#ffd04b">
         <el-menu-item index="1">處理中心</el-menu-item>
         <el-submenu index="2">
           <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 index="2-3">選項3</el-menu-item>
           <el-submenu index="2-4">
             <template slot="title">選項4</template>
             <el-menu-item index="2-4-1">選項1</el-menu-item>
             <el-menu-item index="2-4-2">選項2</el-menu-item>
             <el-menu-item index="2-4-3">選項3</el-menu-item>
           </el-submenu>
         </el-submenu>
         <el-menu-item index="3" disabled>消息中心</el-menu-item>
         <el-menu-item index="4"><a href="https://www.ele.me" target="_blank">訂單管理</a></el-menu-item>
       </el-menu>
       </div>
    </body>
    <script>
       new Vue({
           el:"#div"
      });
    </script>
    </html>

3.八、側邊導航欄組件

 

 

  • 代碼實現

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>側邊導航欄</title>
       <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
       <script src="js/vue.js"></script>
       <script src="element-ui/lib/index.js"></script>
    </head>
    <body>
       <div id="div">
         <el-col :span="6">
           <el-menu
             default-active="2"
             class="el-menu-vertical-demo"
             @open="handleOpen"
             @close="handleClose"
             background-color="#545c64"
             text-color="#fff"
             active-text-color="#ffd04b">
             <el-submenu index="1">
               <template slot="title">
                 <i class="el-icon-location"></i>
                 <span>導航一</span>
               </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">選項1</el-menu-item>
               </el-submenu>
             </el-submenu>
             <el-menu-item index="2">
               <i class="el-icon-menu"></i>
               <span slot="title">導航二</span>
             </el-menu-item>
             <el-menu-item index="3" disabled>
               <i class="el-icon-document"></i>
               <span slot="title">導航三</span>
             </el-menu-item>
             <el-menu-item index="4">
               <i class="el-icon-setting"></i>
               <span slot="title">導航四</span>
             </el-menu-item>
           </el-menu>
         </el-col>
       </div>
    </body>
    <script>
       new Vue({
           el:"#div"
      });
    </script>
    </html>

3.九、小結

  • Element:網站快速成型工具。是一套爲開發者、設計師、產品經理準備的基於Vue的桌面端組件庫。

  • 使用Element前提必需要有Vue。

  • 使用步驟 1.下載Element核心庫。 2.引入Element樣式文件。 3.引入Vue核心js文件。 4.引入Element核心js文件。 5.藉助經常使用組件編寫網頁。

  • 經常使用組件 網頁基本組成部分,佈局、按鈕、表格、表單等等~~~ 經常使用組件不須要記住,只須要在Element官網中複製使用便可。

四、綜合案例 學生列表

4.一、案例效果和分析

 

 

4.二、頭部區域的實現

  • 實現思路

    • 頭部效果實現。

    • 側邊欄和主區域效果實現。

  • 代碼實現

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>學生列表</title>
       <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
       <script src="js/vue.js"></script>
       <script src="element-ui/lib/index.js"></script>
       <style>
         .el-header{
           background-color: #545c64;
        }
         .header-img{
           width: 100px;
           margin-top: 20px;
        }
       </style>
    </head>
    <body>
     <div id="div">
       <el-container>
         <!-- 頭部 -->
         <el-header class="el-header">
           <el-container>
             <div>
               <el-image src="img/export.png" class="header-img"></el-image>
             </div>
             <el-menu
               :default-active="activeIndex2"
               mode="horizontal"
               @select="handleSelect"
               background-color="#545c64"
               text-color="white"
               active-text-color="#ffd04b"
               style="margin-left: auto;">
               <el-menu-item index="1">處理中心</el-menu-item>
               <el-submenu index="2">
                 <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 index="2-3">選項3</el-menu-item>
               </el-submenu>
               <el-menu-item index="3"><a href="學生列表.html" target="_self">首頁</a></el-menu-item>
             </el-menu>
           </el-container>
         </el-header>
       </el-container>
     </div>
    </body>
    <script>
       new Vue({
           el:"#div"
      });
    </script>
    </html>

4.三、側邊欄區域的實現

<!-- 側邊欄區域 -->
<el-container style="height: 580px; border: 1px solid #eee">
   <el-aside width="200px" style=" color: rgb(17, 119, 0);">>
       <el-menu :default-openeds="['1']">
           <el-submenu index="1">
               <template slot="title"><i class="el-icon-menu"></i>學工部</template>
               <el-menu-item-group>
                   <el-menu-item index="1-1"><i class="el-icon-help"></i>在校學生管理</el-menu-item>
                   <el-menu-item index="1-2"><i class="el-icon-help"></i>學生升級/留級</el-menu-item>
                   <el-menu-item index="1-3"><i class="el-icon-help"></i>學生就業狀況</el-menu-item>
               </el-menu-item-group>
           </el-submenu>
           <el-submenu index="2">
               <template slot="title"><i class="el-icon-menu"></i>諮詢部</template>
               <el-menu-item-group>
                   <el-menu-item index="2-1"><i class="el-icon-help"></i>意向學生管理</el-menu-item>
                   <el-menu-item index="2-2"><i class="el-icon-help"></i>未報名學生管理</el-menu-item>
                   <el-menu-item index="2-3"><i class="el-icon-help"></i>已報名學生管理</el-menu-item>
               </el-menu-item-group>
           </el-submenu>
           <el-submenu index="3">
               <template slot="title"><i class="el-icon-menu"></i>教研部</template>
               <el-menu-item-group>
                   <el-menu-item index="3-1"><i class="el-icon-help"></i>已有課程管理</el-menu-item>
                   <el-menu-item index="3-2"><i class="el-icon-help"></i>正在研發課程管理</el-menu-item>
                   <el-menu-item index="3-3"><i class="el-icon-help"></i>新技術課程管理</el-menu-item>
               </el-menu-item-group>
           </el-submenu>
       </el-menu>
   </el-aside>

</el-container>

4.四、主區域的實現

主區域和側邊欄區域放在一塊兒

<!-- 主區域 -->
<el-container>
   <el-main>
       <b style="color: red;font-size: 20px;">學生列表</b>
       <div style="float:right">
           <el-button type="primary">添加學生</el-button>
       </div>
       <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-column
                            label="操做"
                            width="180">
               <el-button type="warning">編輯</el-button>
               <el-button type="danger">刪除</el-button>
           </el-table-column>
       </el-table>
   </el-main>
</el-container>

在vue中定義data

<script>
   new Vue({
       el:"#div",
       data:{
         tableData:[
          {
             date:"2088-08-08",
             name:"張三",
             address:"北京市昌平區"
          },{
             date:"2088-08-08",
             name:"李四",
             address:"北京市昌平區"
          },{
             date:"2088-08-08",
             name:"王五",
             address:"北京市昌平區"
          },
        ]
      }
  });
</script>
相關文章
相關標籤/搜索