記事ディレクトリ
要素 UI の概要
Element
: Ele.me のフロントエンド開発チームが提供する Vue ベースの Web サイト コンポーネント ライブラリのセットで、Web ページをすばやく構築するために使用されます。
Element は、使用するための多くのコンポーネント (Web ページを構成するパーツ) を提供します。ハイパーリンク、ボタン、写真、表など〜
下の写真の左側はページを書くときに表示されるボタンで、上の写真の右側は Element によって提供されるページ効果で、効果は一目瞭然です。
Elementは公式サイトから自分たちのページにコンポーネントをコピーして修正する方法を実際に学習していることがわかります. 公式サイトのURLは
https://element.eleme.cn/#/zh-CN
公式サイトに入ると次のページが表示されます
次に直接クリックする组件
と、ページは次のようになります
要素 UI のクイック スタート
Element-UI を使用する場合は、公式にダウンロードしたリソース パッケージを現在のプロジェクトにコピーしてからインポートします。
それを使用してみましょう:
-
ページを作成し、Element の css、js ファイル、および Vue.js をページに導入します
<script src="vue.js"></script> <script src="element-ui/lib/index.js"></script> <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
-
.Vue コア オブジェクトの作成
Element は Vue に基づいているため、Element を使用する場合は Vue オブジェクトを作成する必要があります。
<script> new Vue({ el:"#app" }) </script>
-
Element コンポーネントのコードを公式 Web サイトからコピーします。
左側のメニューバー
Button 按钮
で見つけて、好きなボタンスタイルを見つけてクリック显示代码
すると、対応するコードが下に表示されます。コードを独自のページにコピーするだけです.
全体的なページ コードは次のとおりです。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<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>
<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>
<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>
<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>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
<script>
new Vue({
el:"#app"
})
</script>
</body>
</html>
要素のレイアウト
Element には、次の 2 つのレイアウト方法があります。
- レイアウト レイアウト
- コンテナ レイアウト コンテナ
レイアウトの一部
基本的な 24 列でレイアウトをすばやく簡単に作成します。つまり、行はデフォルトで 24 列に分割され、各列が占める列数はページ要件に従って設定されます。
左側のメニュー バーLayout 布局
で見つけて、好きなボタン スタイルを見つけてクリック显示代码
すると、対応するコードが下に表示されます. 表示されたコードには、スタイルと html タグが含まれています. スタイルを自分のページのhead
タグコピーし、html タグをタグにコピーします<div id="app"></div>
。
全体的なページ コードは次のとおりです。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.el-row {
margin-bottom: 20px;
}
.el-col {
border-radius: 4px;
}
.bg-purple-dark {
background: #99a9bf;
}
.bg-purple {
background: #d3dce6;
}
.bg-purple-light {
background: #e5e9f2;
}
.grid-content {
border-radius: 4px;
min-height: 36px;
}
.row-bg {
padding: 10px 0;
background-color: #f9fafc;
}
</style>
</head>
<body>
<div id="app">
<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>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
<script>
new Vue({
el:"#app"
})
</script>
</body>
</html>
ここで、8 つのグリッドを表示する行を追加する必要があります. 計算すると、各グリッドは 3 列を占有します. 具体的な html コードは次のとおりです.
<!--
添加一行,8个格子 24/8 = 3
-->
<el-row>
<el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
<el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
<el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
<el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
<el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
<el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
<el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
<el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
</el-row>
コンテナ レイアウト コンテナ
レイアウトに使用されるコンテナ コンポーネントは、ページの基本構造をすばやく構築するのに便利です。次の図は、レイアウト コンテナーの効果です。
次の図は、公式 Web サイトで提供されているコンテナー レイアウト コンテナーの例です。
エフェクト コードには、スタイル、ページ タグ、およびモデル データが含まれます。内部のスタイル<style>
をhead
自分のページのタグにコピーし、html タグを<div id="app"></div>
タグにコピーし、データ モデルをオブジェクトvue
にコピーします。data()
全体的なページ コードは次のとおりです。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.el-header {
background-color: #B3C0D1;
color: #333;
line-height: 60px;
}
.el-aside {
color: #333;
}
</style>
</head>
<body>
<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-submenu index="2-1">
<template slot="title">选项1</template>
<el-menu-item index="2-1-1">选项1-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>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
<script>
new Vue({
el:"#app",
data() {
const item = {
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
};
return {
tableData: Array(20).fill(item)
}
}
})
</script>
</body>
</html>
Element-UI コンポーネントの使用
コンポーネントの使い方については、事例を通して実践しています
事例紹介
次のページ効果を完成させたい
ページを完成させるには、まずページを分析してページがどこで構成されているかを確認し、それを公式 Web サイトにコピーして変更する必要があります。ページには合計で次のコンポーネントがあります
もう1つは、新增
ボタンと、次のようにダイアログボックスがページの中央にポップアップすることです。
基本ページを用意する
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
</div>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
<script>
new Vue({
el: "#app"
})
</script>
</body>
</html>
フォーム表示の完了
Element を使用する全体的な考え方は、コピー + 変更.
コピー
左側のメニューバーを見つけTable 表格
て、右側の本体がテーブルを見つけ、必要なテーブル効果を見つけ (上の図に示すように)、クリック显示代码
してこのテーブルのコードを表示します。
次のように、html タグ<div id="app"></div>
を にます。
次のように、css スタイルを page のhead
タグます。
メソッドとモデル データを Vue オブジェクトで指定された場所にコピーします。
コピーが完了したら、ブラウザで開いてテーブルの効果を確認します
表の効果は出ますが、表示されるヘッダーやデータが思い通りにならないので、次にページコードを修正する必要があります。
改訂
-
ヘッダーとデータの変更
以下は、フォーム コードで実行された分析の図です。下の図の指示に従って、列の数と列名を変更します。
ページを変更した後、バインドされたモデル データを変更する必要があります。次の図は、モデル データの分析の図です。
-
テーブルにアクション列を追加する
前のテーブルから列をコピーして変更します。ボタンは公式ウェブサイトの
Button 按钮
コンポーネント -
チェックボックス列とラベル列をテーブルに追加します
テーブルにチェック ボックスとラベル列を追加すると、次のようになります。
この効果も Element の公式 Web サイトからコピーされます。まず、対応する表の効果を見つけてから、対応するコードをコードにコピーします。以下は、チェック ボックス列の公式 Web サイトの効果図とコードです。
ここで、
<el-table>
タグ.@selection-change="handleSelectionChange"
ここでバインドされた関数も、公式ウェブサイトから独自のページコードにコピーする必要があります. 関数コードは次のとおりです:multipleSelection
この関数から、モデル データが必要であることがわかり、モデル データを定義する必要があります。
ラベル列も同様にコピーして修正します。
完全検索フォーム表示
Element の公式 Web サイトで水平フォーム効果を見つけ、コードをコピーして変更します。
上記显示代码
を対応するコードが表示されます。以下は、コードのこの部分の分析の図です。
次に、必要な効果に応じてコードを変更します。
完全一括削除・追加ボタン表示
Elementの公式サイトからカラーリング効果のあるボタンを見つけて、コードを自分のページにコピーします
ダイアログ表示完了
次のように、Element の公式 Web サイトでダイアログ ボックスを見つけます。
公式ウェブサイトで提供されているコードを以下に分析します
上の図で分析されたモデル データは、Vue オブジェクトで定義する必要があります。
ページネーション バーの表示を完成させる
Element の公式 Web サイトでPagination 分页
見つけて、次のように、ページの主要部分で必要な効果を見つけます。
クリック显示代码
して完整功能
対応するコードを分析します
上記のコード属性の説明:
-
page-size
: 1 ページに表示するエントリ数 -
page-sizes
: 各ページに数量セレクターのオプション設定を表示します。:page-sizes="[100,200,300,400]"
対応するページ効果は次のとおりです。 -
currentPage
: 現在のページ番号。そのページ番号をクリックすると、この属性の値は少数です。 -
total
:合計。これは、データ エントリの総数を設定するために使用されます。このプロパティを設定すると、Element は、分割する必要があるページ数を自動的に計算し、対応するページ番号を表示します。
イベントの説明:
size-change
:pageSize が変更されたときに発生します。つまり、各ページに表示されるアイテムの数を変更すると、このイベントがトリガーされます。current-change
: currentPage が変更されたときに発生します。つまり、他のページ番号をクリックすると、イベントがトリガーされます。
フルページコード
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style>
</head>
<body>
<div id="app">
<!--搜索表单-->
<el-form :inline="true" :model="brand" class="demo-form-inline">
<el-form-item label="当前状态">
<el-select v-model="brand.status" placeholder="当前状态">
<el-option label="启用" value="1"></el-option>
<el-option label="禁用" value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="企业名称">
<el-input v-model="brand.companyName" placeholder="企业名称"></el-input>
</el-form-item>
<el-form-item label="品牌名称">
<el-input v-model="brand.brandName" placeholder="品牌名称"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
</el-form-item>
</el-form>
<!--按钮-->
<el-row>
<el-button type="danger" plain>批量删除</el-button>
<el-button type="primary" plain @click="dialogVisible = true">新增</el-button>
</el-row>
<!--添加数据对话框表单-->
<el-dialog
title="编辑品牌"
:visible.sync="dialogVisible"
width="30%">
<el-form ref="form" :model="brand" label-width="80px">
<el-form-item label="品牌名称">
<el-input v-model="brand.brandName"></el-input>
</el-form-item>
<el-form-item label="企业名称">
<el-input v-model="brand.companyName"></el-input>
</el-form-item>
<el-form-item label="排序">
<el-input v-model="brand.ordered"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="brand.description"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-switch v-model="brand.status"
active-value="1"
inactive-value="0"
></el-switch>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addBrand">提交</el-button>
<el-button @click="dialogVisible = false">取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
<!--表格-->
<template>
<el-table
:data="tableData"
style="width: 100%"
:row-class-name="tableRowClassName"
@selection-change="handleSelectionChange">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
type="index"
width="50">
</el-table-column>
<el-table-column
prop="brandName"
label="品牌名称"
align="center">
</el-table-column>
<el-table-column
prop="companyName"
label="企业名称"
align="center">
</el-table-column>
<el-table-column
prop="ordered"
align="center"
label="排序">
</el-table-column>
<el-table-column
prop="status"
align="center"
label="当前状态">
</el-table-column>
<el-table-column
align="center"
label="操作">
<el-row>
<el-button type="primary">修改</el-button>
<el-button type="danger">删除</el-button>
</el-row>
</el-table-column>
</el-table>
</template>
<!--分页工具条-->
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[5, 10, 15, 20]"
:page-size="5"
layout="total, sizes, prev, pager, next, jumper"
:total="400">
</el-pagination>
</div>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
<script>
new Vue({
el: "#app",
methods: {
tableRowClassName({
row, rowIndex}) {
if (rowIndex === 1) {
return 'warning-row';
} else if (rowIndex === 3) {
return 'success-row';
}
return '';
},
// 复选框选中后执行的方法
handleSelectionChange(val) {
this.multipleSelection = val;
console.log(this.multipleSelection)
},
// 查询方法
onSubmit() {
console.log(this.brand);
},
// 添加数据
addBrand(){
console.log(this.brand);
},
//分页
handleSizeChange(val) {
console.log(`每页 ${
val} 条`);
},
handleCurrentChange(val) {
console.log(`当前页: ${
val}`);
}
},
data() {
return {
// 当前页码
currentPage: 4,
// 添加数据对话框是否展示的标记
dialogVisible: false,
// 品牌模型数据
brand: {
status: '',
brandName: '',
companyName: '',
id:"",
ordered:"",
description:""
},
// 复选框选中数据集合
multipleSelection: [],
// 表格数据
tableData: [{
brandName: '华为',
companyName: '华为科技有限公司',
ordered: '100',
status: "1"
}, {
brandName: '华为',
companyName: '华为科技有限公司',
ordered: '100',
status: "1"
}, {
brandName: '华为',
companyName: '华为科技有限公司',
ordered: '100',
status: "1"
}, {
brandName: '华为',
companyName: '华为科技有限公司',
ordered: '100',
status: "1"
}]
}
}
})
</script>
</body>
</html>