抽屉组件 (Drawer)
# 抽屉组件 (Drawer)
Element-UI 的 Drawer 组件用于在屏幕一侧弹出一个可滑动的面板,可以在其中展示信息、表单或其他内容,适合需要更大空间或与主页面区隔的场景。
提示
Drawer 组件官方文档:https://element.eleme.cn/#/zh-CN/component/drawer (opens new window)
# 1. 基本用法
基本语法:使用 <el-drawer> 标签定义抽屉,设置 visible 属性控制其显示,title 属性定义标题,通过 slot 可以自定义内容。
<template>
<div>
<el-button type="primary" @click="drawer = true">打开 Drawer</el-button>
<el-drawer title="示例 Drawer" :visible.sync="drawer" :size="size" direction="rtl" @close="handleClose">
<span>这里是 Drawer 的内容</span>
<el-button type="primary" @click="drawer = false">关闭</el-button>
</el-drawer>
</div>
</template>
<script>
export default {
data() {
return {
drawer: false, // 控制 Drawer 的显示与隐藏
size: '30%' // 控制 Drawer 的大小
};
},
methods: {
handleClose() {
console.log('Drawer 关闭了');
}
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
visible绑定:通过visible属性与组件的v-model进行绑定,控制 Drawer 的显示与隐藏。- 方向设置:使用
direction属性控制 Drawer 的打开方向,可以选择rtl、ltr、ttb和btt。
# Drawer 属性
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| append-to-body | Drawer 自身是否插入至 body 元素上。嵌套的 Drawer 必须指定该属性并赋值为 true | boolean | — | false |
| before-close | 关闭前的回调,会暂停 Drawer 的关闭,回调函数接受一个 done 参数,用于在回调中手动关闭 Drawer | function(done: Function) | — | — |
| close-on-press-escape | 是否可以通过按下 ESC 关闭 Drawer | boolean | — | true |
| custom-class | Drawer 的自定义类名 | string | — | — |
| destroy-on-close | 控制是否在关闭 Drawer 之后将子元素全部销毁 | boolean | — | false |
| modal | 是否需要遮罩层 | boolean | — | true |
| modal-append-to-body | 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Drawer 的父元素上 | boolean | — | true |
| direction | Drawer 打开的方向 | string | rtl / ltr / ttb / btt | rtl |
| show-close | 是否显示关闭按钮 | boolean | — | true |
| size | Drawer 窗体的大小,支持像素值或百分比 | number / string | — | '30%' |
| title | Drawer 的标题,可以通过 slot 自定义 | string | — | — |
| visible | 是否显示 Drawer,支持 .sync 修饰符 | boolean | — | false |
| wrapperClosable | 点击遮罩层是否可以关闭 Drawer | boolean | — | true |
| withHeader | 控制是否显示 header 栏,若为 false,则 title 属性和 title slot 均不生效 | boolean | — | true |
# Drawer 方法
| 方法名 | 说明 | 参数 |
|---|---|---|
| closeDrawer | 用于关闭 Drawer,并调用 before-close 方法 | — |
# Drawer 事件
| 事件名称 | 说明 | 回调参数 |
|---|---|---|
| open | Drawer 打开的回调 | — |
| opened | Drawer 打开动画结束时的回调 | — |
| close | Drawer 关闭的回调 | — |
| closed | Drawer 关闭动画结束时的回调 | — |
# Drawer 插槽
| 名称 | 说明 |
|---|---|
| — | Drawer 的内容 |
| title | Drawer 标题区的内容 |
# 2. Drawer 常用示例
# 不同方向的 Drawer
通过 direction 属性,可以让 Drawer 从不同方向滑入。
<template>
<div>
<el-button @click="drawer = true">从右侧打开</el-button>
<el-drawer :visible.sync="drawer" title="从右侧打开" direction="rtl">
<p>这是一个从右侧滑出的 Drawer</p>
</el-drawer>
<el-button @click="drawerLeft = true">从左侧打开</el-button>
<el-drawer :visible.sync="drawerLeft" title="从左侧打开" direction="ltr">
<p>这是一个从左侧滑出的 Drawer</p>
</el-drawer>
</div>
</template>
<script>
export default {
data() {
return {
drawer: false, // 控制从右侧打开的 Drawer
drawerLeft: false // 控制从左侧打开的 Drawer
};
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 自定义大小的 Drawer
使用 size 属性可以自定义 Drawer 的宽度或高度。
<template>
<div>
<el-button @click="drawer = true">自定义大小的 Drawer</el-button>
<el-drawer :visible.sync="drawer" title="自定义大小" :size="'50%'" direction="rtl">
<p>这是一个宽度为 50% 的 Drawer</p>
</el-drawer>
</div>
</template>
<script>
export default {
data() {
return {
drawer: false // 控制 Drawer 的显示与隐藏
};
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 使用 before-close 进行确认关闭
通过 before-close 属性可以在关闭 Drawer 之前进行一些操作,比如用户确认。
<template>
<div>
<el-button @click="drawer = true">带关闭确认的 Drawer</el-button>
<el-drawer :visible.sync="drawer" title="关闭前确认" :before-close="beforeClose">
<p>关闭前会进行确认</p>
</el-drawer>
</div>
</template>
<script>
export default {
data() {
return {
drawer: false // 控制 Drawer 的显示与隐藏
};
},
methods: {
beforeClose(done) {
this.$confirm('确定关闭吗?').then(() => {
done(); // 调用 done 方法以关闭 Drawer
});
}
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 3. 总结
- 灵活的布局:通过
direction和size属性,可以实现从任意方向滑出的 Drawer,并自定义其大小。 - 高级的交互:
before-close属性允许你在关闭 Drawer 前执行确认操作,使交互更友好。 - 丰富的事件和插槽:通过内置的事件和插槽,开发者可以灵活定制 Drawer 的行为和内容。
编辑此页 (opens new window)