Vue.js 3.x前端開發(fā)技術(shù)與實(shí)戰(zhàn) 課件 第10章Vue3 UI框架Element Plus_第1頁
Vue.js 3.x前端開發(fā)技術(shù)與實(shí)戰(zhàn) 課件 第10章Vue3 UI框架Element Plus_第2頁
Vue.js 3.x前端開發(fā)技術(shù)與實(shí)戰(zhàn) 課件 第10章Vue3 UI框架Element Plus_第3頁
Vue.js 3.x前端開發(fā)技術(shù)與實(shí)戰(zhàn) 課件 第10章Vue3 UI框架Element Plus_第4頁
Vue.js 3.x前端開發(fā)技術(shù)與實(shí)戰(zhàn) 課件 第10章Vue3 UI框架Element Plus_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

教學(xué)目標(biāo)掌握ElementPlus安裝與配置方法。熟知ElementPlus組件庫的組成與分類。學(xué)會(huì)使用Layout布局、Container布局容器來進(jìn)行頁面布局。學(xué)會(huì)使用配置組件進(jìn)行全局配置。學(xué)會(huì)使用Form表單組件來進(jìn)行表單設(shè)計(jì)。學(xué)會(huì)使用Table表格、VirtualizedTable虛擬化表格等Data數(shù)據(jù)展示組件。學(xué)會(huì)使用導(dǎo)航組件進(jìn)行頁面導(dǎo)航設(shè)計(jì)。1第10章Vue3UI框架ElementPlus(2學(xué)時(shí))210.1ElementPlus概述

ElementPlus(v2.5.2)基于Vue3面向設(shè)計(jì)師和開發(fā)者的組件庫,主要為開發(fā)者、設(shè)計(jì)師和產(chǎn)品經(jīng)理提供一套基于Vue3.X的桌面端組件庫。

詳細(xì)文檔可以參見官網(wǎng):https://element-plus.gitee.io/zh-CN/。由于Vue3.x不再支持IE11(IE已經(jīng)宣告退市),ElementPlus也不再支持IE瀏覽器(支持Edge瀏覽器)。

ElementUI是一套為開發(fā)者、設(shè)計(jì)師和產(chǎn)品經(jīng)理準(zhǔn)備的基于Vue2.x的桌面端組件庫。10.1.1ElementPlus安裝與配置1.使用包管理器安裝

推薦使用npm的方式安裝,它能更好地和webpack打包工具配合使用。命令如下:npminstallelement-plus--save-dev|-Dnpminstallelement-plus--save#yarnyarnaddelement-plus#pnpm

-速度快、節(jié)省磁盤空間的軟件包管理器pnpminstallelement-plus310.1.1ElementPlus安裝與配置

2.CDN引用或本地引用

目前可以通過/element-plus獲取到最新版本的資源,在頁面上引入JS和CSS文件即可開始使用。<head><!--導(dǎo)入樣式--><linkrel="stylesheet"href="http:///element-plus/dist/index.css"/><!--導(dǎo)入Vue3--><scriptsrc="http:///vue@3"></script><!--導(dǎo)入組件庫--><scriptsrc="http:///element-plus"></script></head>【例10-1】ElementPlus初步應(yīng)用實(shí)戰(zhàn)—顯示“HelloWorld!”頁面。<!--

ep-10-1.html

-->

<!DOCTYPE

html>

<html

lang="en">

<head>

<meta

charset="UTF-8">

<meta

http-equiv="X-UA-Compatible"

content="IE=edge">

<meta

name="viewport"

content="width=device-width,

initial-scale=1.0">

<title>Element

Plus顯示頁面</title>

<link

rel="stylesheet"

href="/element-plus/dist/index.css">

<script

src="https:///vue@3"></script>

<script

src="/element-plus"></script>

</head>

4<body>

<div

id="app">

<el-button

@click="display">{{

message

}}</el-button>

</div>

<script>

const

App

=

{

data()

{

return

{

message:

"Hello

Element

Plus",

};

},

methods:

{

display()

{

alert("Hello

World!");

}

},

};

const

app

=

Vue.createApp(App);

app.use(ElementPlus);

app.mount("#app");

</script>

</body>

</html>

10.1.2ElementPlus導(dǎo)航

一般導(dǎo)航會(huì)有側(cè)欄導(dǎo)航和頂部導(dǎo)航2種類型。選擇合適的導(dǎo)航可以讓用戶在產(chǎn)品的使用過程中非常流暢,相反若是不合適就會(huì)引起用戶操作不適(方向不明確)。1.側(cè)欄導(dǎo)航

可將導(dǎo)航欄固定在左側(cè),提高導(dǎo)航可見性,方便頁面之間切換。頂部可放置常用工具,如搜索條、幫助按鈕、通知按鈕等。適用于中后臺(tái)的管理型、工具型網(wǎng)站。

一級(jí)類目-適用于結(jié)構(gòu)簡單的網(wǎng)站:只有一級(jí)頁面時(shí)。不需要使用面包屑,如下圖所示。10.1ElementPlus概述5

二級(jí)類目

側(cè)欄中最多可顯示兩級(jí)導(dǎo)航。當(dāng)使用二級(jí)導(dǎo)航時(shí),建議搭配使用面包屑,方便用戶定位自己的位置和快速返回。頁面效果如下圖所示。10.1ElementPlus概述三級(jí)類目

適用于較復(fù)雜的工具型后臺(tái)。適用于較復(fù)雜的工具型后臺(tái),左側(cè)欄為一級(jí)導(dǎo)航,中間欄可顯示其對(duì)應(yīng)的二級(jí)導(dǎo)航,也可放置其他的工具型選項(xiàng)。頁面效果如右圖所示。2.頂部導(dǎo)航

順應(yīng)了從上至下的正常瀏覽順序,方便瀏覽信息。頂部寬度限制了導(dǎo)航的數(shù)量和文本長度。適用于導(dǎo)航較少,頁面篇幅較長的網(wǎng)站。頁面效果如下圖所示。610.1.3ElementPlus快速開始

在項(xiàng)目中使用ElementPlus可以采用完整導(dǎo)入、按需導(dǎo)入及手動(dòng)導(dǎo)入等方式。

完整導(dǎo)入

如果不是很在乎打包后的文件大小,那么使用完整導(dǎo)入會(huì)更方便。代碼如下://

main.ts

import

{

createApp

}

from

'vue'

import

ElementPlus

from

'element-plus'

import

'element-plus/dist/index.css'

import

App

from

'./App.vue'

const

app

=

createApp(App)

app.use(ElementPlus)

app.mount('#app')

使用Volar需要在tsconfig.json中通過compilerOptions.type指定全局組件類型。代碼如下://

tsconfig.json

{

"compilerOptions":

{

//

...

"types":

["element-plus/global"]

}

}

710.1.3ElementPlus快速開始按需導(dǎo)入

需要使用額外的插件來導(dǎo)入要使用的組件,推薦使用自動(dòng)導(dǎo)入。首先,需要安裝unplugin-vue-components和unplugin-auto-import這兩款插件。命令如下:npminstall-Dunplugin-vue-componentsunplugin-auto-import

然后把下列代碼插入到項(xiàng)目中的Vite或Webpack的配置文件中。代碼如下:(1)Vite//

vite.config.ts

import

{

defineConfig

}

from

'vite'

import

AutoImport

from

'unplugin-auto-import/vite'

import

Components

from

'unplugin-vue-components/vite'

import

{

ElementPlusResolver

}

from

'unplugin-vue-components/resolvers'

export

default

defineConfig({

//

...

plugins:

[

//

...

AutoImport({

resolvers:

[ElementPlusResolver()],

}),

Components({

resolvers:

[ElementPlusResolver()],

}),

],

})

(2)Webpack//

webpack.config.js

const

AutoImport

=

require('unplugin-auto-import/webpack')

const

Components

=

require('unplugin-vue-components/webpack')

const

{

ElementPlusResolver

}

=

require('unplugin-vue-components/resolvers')

module.exports

=

{

//

...

plugins:

[

AutoImport({

resolvers:

[ElementPlusResolver()],

}),

Components({

resolvers:

[ElementPlusResolver()],

}),

],

}

8手動(dòng)導(dǎo)入ElementPlus提供了基于ESModule開箱即用的TreeShaking功能。但是導(dǎo)入樣式時(shí)需要安裝unplugin-element-plus插件??梢詤⒖脊俜骄W(wǎng)站了解如何配置它。

(1)App.vue<template>

<el-button>I

am

ElButton</el-button>

</template>

<script>

import

{

ElButton

}

from

'element-plus'

export

default

{

components:

{

ElButton

},

}

</script>

(2)vite.config.ts

//

vite.config.ts

import

{

defineConfig

}

from

'vite'

import

ElementPlus

from

'unplugin-element-plus/vite'

export

default

defineConfig({

//

...

plugins:

[ElementPlus()],

})

(3)VueCLI//

vue.config.js

module.exports

=

{

configureWebpack:

{

plugins:

[

require('unplugin-element-plus/webpack')({

//

options

}),

],

},

}

注意:如果使用

unplugin-element-plus,并且只使用組件API,需要手動(dòng)導(dǎo)入樣式。舉例如下:import'element-plus/es/components/message/style/css'import{ElMessage}from'element-plus'10.1.3ElementPlus快速開始910.1.4ElementPlus全局配置ElementPlus新增了一個(gè)全局配置管理的組件‘config-provider’,以替代ElementUI的全局配置‘Vtotype.$ELEMENT’。在引入ElementPlus時(shí),可以傳入一個(gè)包含size和zIndex屬性的全局配置對(duì)象。size用于設(shè)置表單組件的默認(rèn)尺寸,zIndex用于設(shè)置彈出組件的層級(jí),zIndex的默認(rèn)值為2000。完整引入import

{

createApp

}

from

'vue'

import

ElementPlus

from

'element-plus'

import

App

from

'./App.vue'

const

app

=

createApp(App)

app.use(ElementPlus,

{

size:

'small',

zIndex:

3000

})

按需引入<template>

<el-config-provider

:size="size"

:z-index="zIndex">

<app

/>

</el-config-provider>

</template>

<script>

import

{

defineComponent

}

from

'vue'

import

{

ElConfigProvider

}

from

'element-plus'

export

default

defineComponent({

components:

{

ElConfigProvider,

},

setup()

{

return

{

zIndex:

3000,

size:

'small',

}

},

})

</script>

10【例10-2】ElementPlus全局配置實(shí)戰(zhàn)-完整引入具體步驟如下:(1)創(chuàng)建項(xiàng)目。在命令行窗口中,執(zhí)行下列命令來創(chuàng)建項(xiàng)目ep-10-2。在對(duì)話界面中勾選Babel和Router,完成項(xiàng)目初步創(chuàng)建。vuecreateep-10-2(2)安裝ElementPlusnpminstallelement-plus–S(3)啟動(dòng)本地開發(fā)服務(wù)npmrunserve

(4)對(duì)項(xiàng)目src子文件夾下的main.js和views/HomeView.vue等文件進(jìn)行適應(yīng)性修改,完成ElementPlus導(dǎo)入、使用及應(yīng)用按鈕組件。修改main.js文件。import

{

createApp

}

from

'vue'

import

App

from

'./App.vue'

import

router

from

'./router'

//

全局引入

element-plus

import

ElementPlus

from

'element-plus'

import

'element-plus/dist/index.css'

//導(dǎo)入樣式createApp(App).use(ElementPlus).use(router).mount('#app')

//使用并掛載修改HomeView.vue文件<template>

<div

class="home">

<img

alt="Vue

logo"

src="../assets/logo.png">

<img

alt="Element

PLus

logo"

src="../assets/element-plus.jpg">

<div>

11<el-button

@click="addCount">Default</el-button>

<el-button

type="primary"

@click="addCount">Primary</el-button>

<el-button

type="success"

@click="addCount">Success</el-button>

<el-button

type="info"

@click="addCount">Info</el-button>

<el-button

type="warning"

@click="addCount">Warning</el-button>

<el-button

type="danger"

@click="addCount">Danger</el-button>

<el-button

@click="addCount">中文</el-button>

<p>count:{{count}}</p>

</div>

</div>

</template>

<script>

export

default

{

name:

'HomeView',

data(){

return{

count:0,

}

},

methods:{

addCount(){

this.count++

}

}

}

</script>

【例10-2】ElementPlus全局配置實(shí)戰(zhàn)-完整引入12【例10-3】ElementPlus全局配置實(shí)戰(zhàn)-局部引入

局部引入即在開發(fā)中用到某個(gè)組件對(duì)引入某個(gè)組件。main.js不需要修改,只需修改HomeView.vue文件。參考代碼如下:<template>

<div

class="home">

<img

alt="Vue

logo"

src="../assets/logo.png">

<img

alt="Element

PLus

logo"

src="../assets/element-plus.jpg">

<h3

align="center">局部引入Element

Plus</h3>

<div>

<el-button

round

@click="addCount">Default</el-button>

<el-button

type="primary"

round

@click="addCount">Primary</el-button>

<el-button

type="success"

round

@click="addCount">Success</el-button>

<el-button

type="info"

round

@click="addCount">Info</el-button>

<el-button

type="warning"

round

@click="addCount">Warning</el-button>

<el-button

type="danger"

round

@click="addCount">Danger</el-button>

<el-button

round

@click="addCount">中文</el-button>

<p>count:{{count}}</p>

</div>

</div>

</template>

<script>

import

{

defineComponent,ref

}

from

'vue'

import

{

ElButton

}

from

'element-plus'

import

'element-plus/theme-chalk/el-button.css'

import

'element-plus/theme-chalk/base.css'

export

default

defineComponent({

components:

{

ElButton

},

setup()

{

const

count=ref(0);

const

addCount=()=>{

count.value++

}

return

{

count,addCount

}

}

})

</script>

13【例10-4】ElementPlus全局配置實(shí)戰(zhàn)—按需引入

推薦按需自動(dòng)引入element-plus。需要安裝2個(gè)插件,分別為unplugin-vue-components和unplugin-auto-import。命令格式如下:npm

install

-D

unplugin-vue-components

unplugin-auto-import

安裝完成之后,需要在vue.config.js文件中進(jìn)行配置。//

vue.config.js

const

AutoImport

=

require('unplugin-auto-import/webpack')

const

Components

=

require('unplugin-vue-components/webpack')

const

{

ElementPlusResolver

}

=

require('unplugin-vue-components/resolvers')

module.exports

=

{

outputDir:

'./build',

//

和webpapck屬性完全一致,最后會(huì)進(jìn)行合并

configureWebpack:

{

resolve:

{

alias:

{

components:

'@/components'

}

},

//配置webpack自動(dòng)按需引入element-plus,

plugins:

[

AutoImport({

resolvers:

[ElementPlusResolver()]

}),

Components({

resolvers:

[ElementPlusResolver()]

})

]

}

}

按需自動(dòng)引入配置完之后,在組件中可直接使用,不需要引用和注冊(cè)。這里已經(jīng)實(shí)現(xiàn)了按需自動(dòng)移入Element-plus組件,組件中直接使用。14<template>

<div

class="home">

<img

alt="Vue

logo"

src="../assets/logo.png"

/>

<img

alt="Element

PLus

logo"

src="../assets/element-plus.jpg"

/>

<h3

align="center">按需自動(dòng)引入Element

Plus</h3>

<div>

<el-button

circle

@click="addCount">Default</el-button>

<el-button

type="primary"

circle

@click="addCount">Primary</el-button>

<el-button

type="success"

circle

@click="addCount">Success</el-button>

<el-button

type="info"

circle

@click="addCount">Info</el-button>

<el-button

type="warning"

circle

@click="addCount">Warning</el-button>

<el-button

type="danger"

circle

@click="addCount">Danger</el-button>

<el-button

circle

@click="addCount">中文</el-button>

<p>count:{{

count

}}</p>

</div>

</div>

</template>

<script>

import

{

defineComponent,

ref

}

from

"vue";

export

default

defineComponent({

setup()

{

const

count

=

ref(0);

const

addCount

=

()

=>

{

count.value++;

};

return

{

count,

addCount,

};

},

});

</script>

【例10-4】ElementPlus全局配置實(shí)戰(zhàn)—按需引入1510.2ElementPlus組件使用組件Demo快速體驗(yàn)交互細(xì)節(jié);使用前端框架封裝的代碼幫助工程師快速開發(fā)。ElementPlus組件主要包括Basic基礎(chǔ)組件、配置組件、Form表單組件、Data數(shù)據(jù)展示、Navigation導(dǎo)航、Feedback反饋組件、Others其它等七大類。每一大類又包含很多組件。以下分別簡單介紹每一大類的組成元素。Basic基礎(chǔ)組件:Button按鈕、Border邊框、Color色彩、Container布局容器、Icon圖標(biāo)、Layout布局、Link鏈接、Scrollbar滾動(dòng)條、Space間距、Typography排版。配置組件:ConfigProvider全局配置。Form表單組件:Autocomplete自動(dòng)補(bǔ)全輸入框、Cascader級(jí)聯(lián)選擇器、Checkbox多選框、ColorPicker取色器、DatePicker日期選擇器、DateTimePicker日期時(shí)間選擇器、Form表單、Input輸入框、InputNumber數(shù)字輸入框、Radio單選框、Rate評(píng)分、Select選擇器、VirtualizedSelect虛擬化選擇器、Slider滑塊、Switch開關(guān)、TimePicker時(shí)間選擇器、TimeSelect時(shí)間選擇、Transfer穿梭框、Upload上傳。16Data數(shù)據(jù)展示:Avatar頭像、Badge徽章、Calendar日歷、Card卡片、Carousel走馬燈、Collapse折疊面板、Descriptions描述列表、Empty空狀態(tài)、Image圖片、InfiniteScroll無限滾動(dòng)、Pagination分頁、Progress進(jìn)度條、Result結(jié)果、Skeleton骨架屏、Table表格、VirtualizedTable虛擬化表格、Tag標(biāo)記、Timeline時(shí)間線、Tree樹形控件、TreeSelect樹形選擇、VirtualizedTree虛擬化樹形控件。Navigation:Affix固釘、Backtop回到頂部、Breadcrumb面包屑、Dropdown下拉菜單、Menu菜單、PageHeader頁頭、Steps步驟條、Tabs標(biāo)簽頁。Feedback反饋組件:Alert提示、Dialog對(duì)話框、Drawer抽屜、Loading加載、Message消息提示、MessageBox消息彈出框、Notification通知、Popconfirm氣泡確認(rèn)框、Popover彈出框、Tooltip文字提示。Others其他:Divider分割線。10.2ElementPlus組件17Scrollbar滾動(dòng)條(用于替換瀏覽器原生滾動(dòng)條)應(yīng)用。代碼如下,頁面效果如下圖所示。

具體步驟:使用vuecreateep-10-5創(chuàng)建帶Router和Babel特性的項(xiàng)目,在ep-10-5文件夾下安裝element-plus插件,修改main.js文件,插入導(dǎo)入element-plus和樣式文件,修改views/HomeView.vue文件,使用<el-scrollbar>組件(代碼中第7~13行),并在組件中插入1個(gè)包含若干p標(biāo)記的div標(biāo)記,用來顯示可以滾動(dòng)的帶數(shù)字的色塊。修改views/HomeView.vue文件<template>

<div

class="home">

<img

alt="Vue

logo"

src="../assets/logo.png"

/>

<img

alt="Element

PLus

logo"

src="../assets/element-plus.jpg"

/>

<h3>基礎(chǔ)組件--滾動(dòng)條應(yīng)用</h3>

<div>

【例10-5】ElementPlus的BASIC基礎(chǔ)組件實(shí)戰(zhàn)

<el-scrollbar>

<div

class="scrollbar-flex-content">

<p

v-for="item

in

20"

:key="item"

class="scrollbar-demo-item">

{{

item

}}

</p>

</div>

</el-scrollbar>

</div>

</div>

</template>

<style

scoped>

h3

{

text-align:

center;}

.scrollbar-flex-content

{

display:

flex;}

.scrollbar-demo-item

{

flex-shrink:

0;

display:

flex;

align-items:

center;

justify-content:

center;

width:

100px;

height:

50px;

margin:

10px;

text-align:

center;

border-radius:

4px;

background:

var(--el-color-danger-light-9);

color:

var(--el-color-danger);

}

.home

{

margin:

0px

auto;

width:

850px;

}

</style>

<script>

export

default

{

name:

"HomeView",

};

</script>

18修改main.js文件import

{

createApp

}

from

'vue'

import

App

from

'./App.vue'

import

router

from

'./router'

//

全局引入

element-plus

import

ElementPlus

from

'element-plus'

import

'element-plus/dist/index.css'

createApp(App).use(ElementPlus).use(router).mount('#app')

【例10-5】ElementPlus的BASIC基礎(chǔ)組件實(shí)戰(zhàn)1910.3ElementPlus組件應(yīng)用

10.3.1Basic基礎(chǔ)組件--Container布局容器1.布局容器組件簡介

Container布局容器用于布局的容器組件,方便快速搭建頁面的基本結(jié)構(gòu)。具體組件如下:<el-container>:外層容器。當(dāng)子元素中包含<el-header>或<el-footer>時(shí),全部子元素會(huì)垂直上下排列,否則會(huì)水平左右排列。布局容器組件及子元素屬性及說明如表10-1所示。<el-header>:頂欄容器。<el-aside>:側(cè)邊欄容器。<el-main>:主要區(qū)域容器。<el-footer>:底欄容器。

注意:以上組件采用了flex布局,使用前請(qǐng)確定目標(biāo)瀏覽器是否兼容。此外,<el-container>的直接子元素必須是后4個(gè)組件中的一個(gè)或多個(gè)。后4個(gè)組件的父元素必須是一個(gè)<el-container>。容器子元素參數(shù)(屬性)默認(rèn)值說明<el-container>directionhorizontal/vertical子元素中有el-header或el-footer時(shí)為vertical,否則為horizontal<el-header>height60px頂欄高度<el-aside>width300px側(cè)邊欄寬度,與<el-main>一起使用時(shí)均為水平排列<el-main>width

主要區(qū)域?qū)挾?,與<el-aside>一起使用時(shí)均為水平排列<el-footer>height60px底欄高度,與其它容器一起使用時(shí)為垂直排列202.常見頁面布局

在單頁應(yīng)用項(xiàng)目開發(fā)中,常常涉及到頁面布局的問題。采用ElementPlus的Container布局容器組件可以十分方便地實(shí)現(xiàn)各種類型的頁面布局。常用頁面布局可分為上下型、上中下型、左右型及左右和上下混合型布局,如下圖所示。上下型。10.3ElementPlus組件應(yīng)用2110.3ElementPlus組件應(yīng)用【例10-6】ElementPlus基礎(chǔ)組件--布局容器實(shí)戰(zhàn)。

使用vuecreateep-10-6創(chuàng)建項(xiàng)目ep-10-6,選擇Babel和Router特性創(chuàng)建項(xiàng)目,進(jìn)入項(xiàng)目文件夾安裝elemenet-plus插件,啟動(dòng)npmrunserve。在瀏覽器打開http://localhost:8080/。然后對(duì)main.js和views/HomeView.vue文件進(jìn)行適當(dāng)修改,完成布局容器組件的應(yīng)用。修改main.js文件import

{

createApp

}

from

"vue";

import

App

from

"./App.vue";

import

router

from

"./router";

//

全局引入

element-plus

import

ElementPlus

from

"element-plus";

import

"element-plus/dist/index.css";

createApp(App).use(ElementPlus).use(router).mount("#app");

22修改Views/HomeView.vue文件<template>

<div

class="home">

<img

alt="Vue

logo"

src="../assets/logo.png"

/>

<img

alt="Element

PLus

logo"

src="../assets/element-plus.jpg"

/>

<h3>布局容器的應(yīng)用</h3>

<div

class="common-layout">

<el-container

class="c1">

<el-header

class="h1">Header</el-header>

<el-container

class="c2">

<el-aside

class="a1"

width="200px">Aside</el-aside>

<el-container>

<el-header

class="a1h1">header</el-header>

<el-main

class="a1m1">Main</el-main>

<el-footer

class="a1f1">Footer</el-footer>

</el-container>

</el-container>

<el-footer

class="f1">Footer</el-footer>

</el-container>

</div>

</div>

</template>

<script>

export

default

{

name:

"HomeView",

};

</script>

<style>

.common-layout

{

margin:

0

auto;

width:

900px;

height:

420px;

border:

1px

dashed

#99aabb;

text-align:

center;

vertical-align:

middle;

}

.c1

{width:

100%;

height:

100%;

}

.h1

{

height:

60px;

background-color:

#f1f1f0;

}

.c2

{

height:

300px;

}

.a1

{

height:

300px;

background-color:

#f5f6fa;

}

.a1h1

{

height:

60px;

background-color:

#f2f0de;

}

.a1m1

{

height:

180px;

background-color:

#f7f8f0;

}

.a1f1

{

height:

60px;

background-color:

#f1f2c9;

}

.f1

{

height:

60px;

background:

#f1f5e9;

}

</style>

【例10-6】ElementPlus基礎(chǔ)組件--布局容器實(shí)戰(zhàn)2310.3.2Basic基礎(chǔ)組件--Layout布局

通過基礎(chǔ)的24分欄,迅速簡便地創(chuàng)建布局。注意:組件默認(rèn)使用Flex布局,不需要手動(dòng)設(shè)置type="flex"。需要注意父容器避免使用inline相關(guān)樣式,會(huì)導(dǎo)致組件寬度不能撐滿。1.基礎(chǔ)布局

使用列創(chuàng)建基礎(chǔ)網(wǎng)格布局。通過<el-row>和<el-col>組件,并通過<el-col>組件的span屬性來自由地組合布局。部分代碼如下,效果如圖10-14所示。<template>

<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>

24<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>

</template>

10.3.2Basic基礎(chǔ)組件--Layout布局2.分欄間隔

支持列間距。<el-row>組件提供gutter屬性來指定列之間的間距,其默認(rèn)值為0。部分代碼如下,頁面效果如圖10-15所示。<template>

<el-row

:gutter="20">

<el-col

:span="6"><div

class="grid-content

bg-purple"></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"></div></el-col>

<el-col

:span="6"><div

class="grid-content

bg-purple"></div></el-col>

</el-row>

</template>

253.混合布局

通過基礎(chǔ)的1/24分欄任意擴(kuò)展組合形成較為復(fù)雜的混合布局。代碼如下,頁面效果如圖10-16所示。

<el-col

:span="4"><div

class="grid-content

bg-purple"></div></el-col>

<el-col

:span="4"><div

class="grid-content

bg-purple"></div></el-col>

</el-row>

<el-row

:gutter="20">

<el-col

:span="4"><div

class="grid-content

bg-purple"></div></el-col>

<el-col

:span="16"><div

class="grid-content

bg-purple"></div></el-col>

<el-col

:span="4"><div

class="grid-content

bg-purple"></div></el-col>

</el-row>

</template>

<style>

.el-row

{

margin-bottom:

20px;

}

.el-row:last-child

{margin-bottom:

0;}

.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>

<template>

<el-row

:gutter="20">

<el-col

:span="16"><div

class="grid-content

bg-purple"></div></el-col>

<el-col

:span="8"><div

class="grid-content

bg-purple"></div></el-col>

</el-row>

<el-row

:gutter="20">

<el-col

:span="8"><div

class="grid-content

bg-purple"></div></el-col>

<el-col

:span="8"><div

class="grid-content

bg-purple"></div></el-col>

10.3.2Basic基礎(chǔ)組件--Layout布局26

4.列偏移

可以指定列偏移量。通過設(shè)置<el-col>組件的offset屬性可以指定分欄偏移的欄數(shù)。代碼如下,頁面效果如圖10-17所示。<el-row

:gutter="20">

<el-col

:span="6"><div

class="grid-content

bg-purple"></div></el-col>

<el-col

:span="6"

:offset="6"

>

<div

class="grid-content

bg-purple"></div>

</el-col>

</el-row>

5.對(duì)齊方式

默認(rèn)使用flex布局來對(duì)分欄進(jìn)行靈活的對(duì)齊??梢酝ㄟ^justify屬性來定義子元素的排版方式,其取值為start(左對(duì)齊,默認(rèn))、center(居中對(duì)齊)、end(右對(duì)齊)、space-between(兩個(gè)相鄰子元素之間的間距相等)、space-around(容器中的每個(gè)子元素的每一側(cè)間距都是相等)或space-evenly(容器起始邊緣和第一個(gè)子元素之間的間距和每個(gè)相鄰子元素之間的間距相等)。代碼如下,頁面效果如圖10-18所示。10.3.2Basic基礎(chǔ)組件--Layout布局27<template>

<el-row

class="row-bg">

<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-row>

<el-row

class="row-bg"

justify="center">

<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-row>

<el-row

class="row-bg"

justify="end">

<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-row>

<el-row

class="row-bg"

justify="space-between">

<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-row>

<el-row

class="row-bg"

justify="space-around">

<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-row>

<el-row

class="row-bg"

justify="space-evenly">

<el-col

:span="6"><div

class="grid-content

bg-purple"

/></el-col>

<el-col

:span="6"><div

class="grid-content

bg-purple-light"

/></el-col>

<el-col

:span="6"><div

class="grid-content

bg-purple"

/></el-col>

</el-row>

</template>

10.3.2Basic基礎(chǔ)組件--Layout布局2810.3.2Basic基礎(chǔ)組件--Layout布局

6.響應(yīng)式布局

參照了Bootstrap的響應(yīng)式設(shè)計(jì),預(yù)設(shè)了五個(gè)響應(yīng)尺寸:xs、sm、md、lg和xl。代碼如下,頁面效果如圖10-19所示。<template>

<el-row

:gutter="10">

<el-col

:xs="8"

:sm="6"

:md="4"

:lg="3"

:xl="1"><div

class="grid-content

bg-purple"></div></el-col>

<el-col

:xs="4"

:sm="6"

:md="8"

:lg="9"

:xl="11">

<div

class="grid-content

bg-purple-light"></div>

</el-col>

<el-col

:xs="4"

:sm="6"

:md="8"

:lg="9"

:xl="11">

<div

class="grid-content

bg-purple"></div>

</el-col>

<el-col

:xs="8"

:sm="6"

:md="4"

:lg="3"

:xl="1">

<div

class="grid-content

bg-purple-light"></div>

</el-col>

</el-row>

</template>

7.RowAPI和Col組件APIRow組件和College組件屬性分別如表10-2和如表10-3所示。屬性說明類型默認(rèn)值gutter柵格間隔number0justifyflex布局下的水平排列方式enumstartalignflex布局下的垂直排列方式enumtoptag自定義元素標(biāo)簽stringdiv屬性說明類型默認(rèn)值span柵格占據(jù)的列數(shù)number24offset柵格左側(cè)的間隔格數(shù)number0push柵格向右移動(dòng)格數(shù)number0pull柵格向左移動(dòng)格數(shù)number0xs<768px響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象number/object--sm≥768px響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象number/object--md≥992px響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象number/object--lg≥1200px響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象number/object--xl≥1920px響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象number/object--tag自定義元素標(biāo)記stringdiv29

8.Row插槽和Col插槽Row插槽和Col插槽名如表10-4所示。元素名稱描述子標(biāo)記Rowdefault自定義默認(rèn)內(nèi)容ColColdefault自定義默認(rèn)內(nèi)容

10.3.3配置組件--config-provider全局配置ConfigProvider被用來提供全局的配置選項(xiàng),讓配置能夠在全局都能夠被訪問到。

1.i18n配置

通過ConfigProvider來配置多語言,讓所設(shè)計(jì)的應(yīng)用可以隨時(shí)切換語言。ConfigProvider屬性如表10-5所示,Button屬性與Message屬性如表10-6所示,ConfigProvider插槽說明如表10-7所示。使用locale和button兩個(gè)屬性來提供i18n相關(guān)配置。屬性說明類型默認(rèn)值locale 翻譯文本對(duì)象

objectensize全局組件大小enumdefaultzIndex 全局初始化zIndex的值number--namespace全局組件類名稱前綴(需要配合$namespace使用)stringelbutton 按鈕相關(guān)的配置詳細(xì)配置見下表object詳見下表message 消息相關(guān)配置,詳見下表object詳見下表experimental-features將要添加的實(shí)驗(yàn)階段的功能,所有功能都是默認(rèn)設(shè)置為falseobject--屬性參數(shù)描述類型默認(rèn)值buttonautoInsertSpace自動(dòng)在兩個(gè)中文字符之間插入空格booleanfalsemessagemax可同時(shí)顯示的消息最大數(shù)量number--10.3.2Basic基礎(chǔ)組件--Layout布局30<template>

<el-config-provider

:locale="locale">

<app

/>

</el-config-provider>

</template>

<script>

import

{

defineComponent

}

from

'vue'

import

{

ElConfigProvider

}

from

'element-plus'

import

zhCn

from

'element-plus/dist/locale/zh-cn.mjs'

export

default

defineComponent({

components:

{ElConfigProvider,

},

setup()

{

return

{

locale:

zhCn,

}

},

})

</script>

名稱描述Scopedefault自定義默認(rèn)內(nèi)容config:提供全局配置(從頂部繼承)10.3.2Basic基礎(chǔ)組件--Layout布局(1)全局配置ElementPlus提供了全局配置國際化的配置。如使用中文語言,代碼如下:import

ElementPlus

from

'element-plus'

import

zhCn

from

'element-plus/dist/locale/zh-cn.mjs'

app.use(ElementPlus,

{locale:

zhCn,

})

(2)ConfigProvider組件ElementPlus還提供了一個(gè)Vue組件ConfigProvider用于全局配置國際化的設(shè)置。單文件組件中引用格式如下:【例10-7】配置組件實(shí)戰(zhàn)。31

使用vuecreateep-10-7創(chuàng)建項(xiàng)目ep-10-7,步驟與【例10-6】相同。進(jìn)入項(xiàng)目文件夾安裝elemenet-plus插件,啟動(dòng)npmrunserve。在瀏覽器打開http://localhost:8080/。然后對(duì)main.js和views/HomeView.vue文件進(jìn)行適當(dāng)修改,完成布局容器組件的應(yīng)用?!纠?0-7】配置組件實(shí)戰(zhàn)。修改HomeView.vue文件<template>

<div>

<el-button

@click="toggle">Switch

Language</el-button>

<br

/>

<el-config-provider

:locale="locale">

<el-table

:data="list"

style="width:

100%">

<el-table-column

prop="id"

label="ID"

width="180"

/>

<el-table-column

prop="text"

label="TEXT"

width="580"

/>

</el-table>

<el-pagination

:total="100"

/>

</el-config-provider>

</div>

</template>

<script

setup>

import

{

computed,

ref,

reactive

}

from

"vue";

import

zhCn

from

"element-plus/dist/locale/zh-cn.mjs";

import

en

from

"element-plus/dist/locale/en.mjs";

const

list

=

reactive([

{

id:

1,

text:

"上午10:10開會(huì)"

},

{

id:

2,

text:

"下午去人社局取文件"

},

32

{

id:

3,

text:

"提交工作計(jì)劃"

},

{

id:

4,

text:

"去機(jī)械工程學(xué)院調(diào)研"

},

]);

const

language

=

ref("zh-cn");

const

locale

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論