官方文档 https://element.eleme.cn/#/zh-CN/component/input-number
安装和使用
安装
npm i element-ui -S
引入 Element
在 main.js 中写入以下内容:
import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';
Vue.use(ElementUI);
new Vue({
el: '#app',
render: h => h(App)
});
组件
Layout 布局
Container 布局容器
用于布局的容器组件,方便快速搭建页面的基本结构:
<el-container>
:外层容器。当子元素中包含 <el-header>
或 <el-footer>
时,全部子元素会垂直上下排列,否则会水平左右排列。
<el-header>
:顶栏容器。
<el-aside>
:侧边栏容器。
<el-main>
:主要区域容器。
<el-footer>
:底栏容器。
以上组件采用了 flex 布局,使用前请确定目标浏览器是否兼容。此外,<el-container>
的子元素只能是后四者,后四者的父元素也只能是 <el-container>
。
Icon 图标
直接通过设置类名为 el-icon-iconName
来使用即可
Button 按钮
使用type
、plain
、round
和circle
属性来定义 Button 的样式,禁用disable
<el-row>
<el-button>默认按钮</el-button>
<el-button type="primary">主要按钮</el-button>
<el-button type="success" disabled>成功按钮</el-button>
<el-button type="info">信息按钮</el-button>
<el-button type="warning">警告按钮</el-button>
<el-button type="danger">危险按钮</el-button>
</el-row>
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
size | 尺寸 | string | medium / small / mini | — |
type | 类型 | string | primary / success / warning / danger / info / text | — |
plain | 是否朴素按钮 | boolean | — | false |
round | 是否圆角按钮 | boolean | — | false |
circle | 是否圆形按钮 | boolean | — | false |
loading | 是否加载中状态 | boolean | — | false |
disabled | 是否禁用状态 | boolean | — | false |
icon | 图标类名 | string | — | — |
autofocus | 是否默认聚焦 | boolean | — | false |
native-type | 原生 type 属性 | string | button / submit / reset | button |
Radio 单选框
要使用 Radio 组件,只需要设置v-model
绑定变量,选中意味着变量的值为相应 Radio label
属性的值,label
可以是String
、Number
或Boolean
。
<template>
<el-radio v-model="radio" label="1">备选项</el-radio>
<el-radio v-model="radio" label="2">备选项</el-radio>
</template>
禁用
在el-radio
元素中设置disabled
属性即可,它接受一个Boolean
,true
为禁用。
Checkbox 多选框
在el-checkbox
元素中定义v-model
绑定变量,单一的checkbox
中,默认绑定变量的值会是Boolean
,选中为true
。
Input 输入框
<el-input v-model="input" placeholder="请输入内容"></el-input>
通过 disabled
属性指定是否禁用 input 组件
InputNumber 计数器
仅允许输入标准的数字值,可定义范围
在el-input-number
元素中使用v-model
绑定变量即可,变量的初始值即为默认值
Select 选择器
v-model
的值为当前被选中的el-option
的 value 属性值
<template>
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</template>
可清空单选:包含清空按钮,可将选择器清空为初始状态
为el-select
设置clearable
属性,则可将选择器清空。需要注意的是,clearable
属性仅适用于单选。
Cascader 级联选择器
只需为 Cascader 的options
属性指定选项数组即可渲染出一个级联选择器。通过props.expandTrigger
可以定义展开子级菜单的触发方式。
<div class="block">
<span class="demonstration">默认 click 触发子菜单</span>
<el-cascader
v-model="value"
:options="options"></el-cascader>
</div>
Switch 开关
绑定v-model
到一个Boolean
类型的变量。可以使用active-color
属性与inactive-color
属性来设置开关的背景色。
<el-switch
v-model="value"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
TimePicker 时间选择器
使用 el-time-select 标签,分别通过start
、end
和step
指定可选的起始时间、结束时间和步长
DatePicker 日期选择器
基本单位由type
属性指定。快捷选项需配置picker-options
对象中的shortcuts
,禁用日期通过 disabledDate
设置,传入函数
<div class="block">
<el-date-picker
v-model="value1"
type="date"
placeholder="选择日期">
</el-date-picker>
</div>
DateTimePicker 日期时间选择器
通过设置type
属性为datetime
,即可在同一个选择器里同时进行日期和时间的选择。快捷选项的使用方法与 Date Picker 相同。
<div class="block">
<el-date-picker
v-model="value1"
type="datetime"
placeholder="选择日期时间">
</el-date-picker>
</div>
Upload 上传
通过 slot 你可以传入自定义的上传按钮类型和文字提示。可通过设置limit
和on-exceed
来限制上传文件的个数和定义超出限制时的行为。可通过设置before-remove
来阻止文件移除操作。
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
Form 表单
在 Form 组件中,每一个表单域由一个 Form-Item 组件构成,表单域中可以放置各种类型的表单控件,包括 Input、Select、Checkbox、Radio、Switch、DatePicker、TimePicker
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="活动名称">
<el-input v-model="form.name"></el-input>
</el-form-item>
</el-form>
- 行内表单:
当垂直方向空间受限且表单较简单时,可以在一行内放置表单。设置 inline
属性可以让表单域变为行内的表单域
- 表单验证:
Form 组件提供了表单验证的功能,只需要通过 rules
属性传入约定的验证规则,并将 Form-Item 的 prop
属性设置为需校验的字段名即可。校验规则参见 async-validator
Table 表格
当el-table
元素中注入data
对象数组后,在el-table-column
中用prop
属性来对应对象中的键名即可填入数据,用label
属性来定义表格的列名。可以使用width
属性来定义列宽。
<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>
默认情况下,Table 组件是不具有竖直方向的边框的,如果需要,可以使用border
属性,它接受一个Boolean
,设置为true
即可启用。
- 获取当前行数据
表格中的数据是已经显示过的,要想拿到当前表格中指定行数的数据时,则需要在template
标签中添加这个属性即可
slot-scope=“scope”
同时写出一个点击事件的方法例如上述的编辑按钮,其中 scope.row
就是拿到当前行的所有数据,如果要想拿到制定数据,则需要指定你当前行指定需要的数据的字段就好,如:scope.row.musicId
<el-table-column label="操作" align="center" min-width="100">
<template slot-scope="scope">
<el-button type="primary" @click="edit(scope.row)">编辑</el-button>
</template>
</el-table-column>
- formatter
用来格式化内容。默认参数 Function(row, column, cellValue, index),案例:后端返回1、0,前端显示为是、否
Pagination 分页
设置layout
,表示需要显示的内容,用逗号分隔,布局元素会依次显示。prev
表示上一页,next
为下一页,pager
表示页码列表,除此以外还提供了jumper
和total
,sizes
和特殊的布局符号->
,->
后的元素会靠右显示,jumper
表示跳页元素,total
表示总条目数,sizes
用于设置每页显示的页码数量
-
当前页码切换事件(current-change):
@current-change='xx'
currentPage 改变时会触发,事件传入当前页码,可以根据当前页码向后台获取当前页码的数据。单独使用current-change属性要实现双向绑定,可以使用 .sync 修饰符
:current-change.sync='currentPage'
-
每页显示条数变更事件(size-change):
@size-change='xx'
pageSize 改变时会触发,事件传入的参数是当前每页显示的条数,可以根据当前每页显示的条数向后台获取当前页码的数据。单独使用page-size属性要实现双向绑定,可以使用 .sync 修饰符
:page-size.sync='pageSize'
<div class="block">
<el-pagination
layout="prev, pager, next"
:total="1000">
</el-pagination>
</div>
Empty 空状态
空状态时的占位提示。
<el-empty description="描述文字"></el-empty>
Descriptions 描述列表
列表形式展示多个字段。
<el-descriptions title="用户信息">
<el-descriptions-item label="用户名">kooriookami</el-descriptions-item>
<el-descriptions-item label="手机号">18100000000</el-descriptions-item>
<el-descriptions-item label="居住地">苏州市</el-descriptions-item>
<el-descriptions-item label="备注">
<el-tag size="small">学校</el-tag>
</el-descriptions-item>
<el-descriptions-item label="联系地址">江苏省苏州市吴中区吴中大道 1188 号</el-descriptions-item>
</el-descriptions>
Statistic 统计数值
<el-statistic group-separator="," :precision="2" :value="12333" :title="统计"></el-statistic>
Message 消息提示
Message 在配置上与 Notification 非常类似,所以部分 options 在此不做详尽解释,文末有 options 列表,可以结合 Notification 的文档理解它们。Element 注册了一个$message
方法用于调用,Message 可以接收一个字符串或一个 VNode 作为参数,它会被显示为正文内容。
<template>
<el-button :plain="true" @click="open">打开消息提示</el-button>
</template>
<script>
export default {
methods: {
open() {
this.$message('这是一条消息提示');
},
</script>
Notification 通知
悬浮出现在页面角落,显示全局的通知提醒消息。
Notification 组件提供通知功能,Element 注册了$notify
方法,接收一个options
字面量参数,在最简单的情况下,你可以设置title
字段和message
字段,用于设置通知的标题和正文。默认情况下,经过一段时间后 Notification 组件会自动关闭,但是通过设置duration
,可以控制关闭的时间间隔,特别的是,如果设置为0
,则不会自动关闭。注意:duration
接收一个Number
,单位为毫秒,默认为4500
。
Breadcrumb 面包屑
显示当前页面的路径,快速返回之前的任意页面。
在el-breadcrumb
中使用el-breadcrumb-item
标签表示从首页开始的每一级。Element 提供了一个separator
属性,在el-breadcrumb
标签中设置它来决定分隔符,它只能是字符串,默认为斜杠/
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item><a href="/">活动管理</a></el-breadcrumb-item>
<el-breadcrumb-item>活动列表</el-breadcrumb-item>
<el-breadcrumb-item>活动详情</el-breadcrumb-item>
</el-breadcrumb>
Dropdown 下拉菜单
将动作或菜单折叠到下拉菜单中。
通过组件slot
来设置下拉触发的元素以及需要通过具名slot
为dropdown
来设置下拉菜单。默认情况下,下拉按钮只要hover
即可,无需点击也会显示下拉菜单。
<el-dropdown>
<span class="el-dropdown-link">
下拉菜单<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<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-item disabled>双皮奶</el-dropdown-item>
<el-dropdown-item divided>蚵仔煎</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
Dialog 对话框
Dialog 弹出一个对话框,适合需要定制性更大的场景。
需要设置visible
属性,它接收Boolean
,当为true
时显示 Dialog。Dialog 分为两个部分:body
和footer
,footer
需要具名为footer
的slot
。title
属性用于定义标题,它是可选的,默认值为空。最后,本例还展示了before-close
的用法。
before-close
仅当用户通过点击关闭图标或遮罩关闭 Dialog 时起效。如果你在 footer
具名 slot 里添加了用于关闭 Dialog 的按钮,那么可以在按钮的点击回调函数里加入 before-close
的相关逻辑。
Dialog 组件的内容可以是任意的,甚至可以是表格或表单
<el-button type="text" @click="dialogVisible = true">点击打开 Dialog</el-button>
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose">
<span>这是一段信息</span>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogVisible = false">确 定</el-button>
</span>
</el-dialog>
<script>
export default {
data() {
return {
dialogVisible: false
};
},
methods: {
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
}
}
};
</script>
Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot 不会被渲染到 DOM 上。因此,如果需要执行 DOM 操作,或通过 ref
获取相应组件,请在 open
事件回调中进行。
如果 visible
属性绑定的变量位于 Vuex 的 store 内,那么 .sync
不会正常工作。此时需要去除 .sync
修饰符,同时监听 Dialog 的 open
和 close
事件,在事件回调中执行 Vuex 中对应的 mutation 更新 visible
属性绑定的变量的值。
Tooltip 文字提示
常用于展示鼠标 hover 时的提示信息。
使用content
属性来决定hover
时的提示信息。由placement
属性决定展示效果:placement
属性值为:方向-对齐位置
;四个方向:top
、left
、right
、bottom
;三种对齐位置:start
, end
,默认为空。如placement="left-end"
,则提示信息出现在目标元素的左侧,且提示信息的底部与目标元素的底部对齐。
Popconfirm 气泡确认框
点击元素,弹出气泡确认框
在 Popconfirm 中,只有 title
属性可用,content
属性不会被展示
Carousel 走马灯
在有限空间内,循环播放同一类型的图片、文字等内容
结合使用el-carousel
和el-carousel-item
标签就得到了一个走马灯。幻灯片的内容是任意的,需要放在el-carousel-item
标签中。默认情况下,在鼠标 hover 底部的指示器时就会触发切换。通过设置trigger
属性为click
,可以达到点击触发的效果。
Collapse 折叠面板
通过折叠面板收纳内容区域
Divider 分割线
区隔内容的分割线。
Drawer 抽屉
有些时候, Dialog
组件并不满足我们的需求, 比如你的表单很长, 亦或是你需要临时展示一些文档, Drawer
拥有和 Dialog
几乎相同的 API, 在 UI 上带来不一样的体验.