Skip to content

Drawer 抽屉

抽屉组件用于从屏幕边缘滑出的面板,用于展示额外的内容或操作。

基础用法

通过 showDrawer(options) 函数可以方便地在任何地方打开抽屉,无需在模板中预先声明组件。

不同位置

抽屉支持从四个方向打开:左、右、上、下。通过 position 属性控制。

不同尺寸

抽屉支持多种尺寸:sm、md、lg、fullscreen。通过 size 属性控制。

自定义按钮

通过 footer 属性可以自定义抽屉的底部按钮。

异步关闭

通过 onOk 事件可以实现异步关闭抽屉。

动画控制

通过 animated 属性可以控制抽屉是否启用弹出动画。

Props

属性名类型默认值说明
openbooleanundefined是否打开抽屉
defaultOpenbooleanfalse默认是否打开抽屉
titlestring''抽屉标题
contentstring | HTMLElement | (() => HTMLElement)undefined抽屉内容
sizestring'md'抽屉尺寸,可选值:'sm', 'md', 'lg', 'fullscreen'
positionstring'right'抽屉位置,可选值:'left', 'right', 'top', 'bottom'
closablebooleantrue是否显示关闭按钮
maskbooleantrue是否显示遮罩层
maskClosablebooleantrue点击遮罩层是否可以关闭抽屉
escClosablebooleantrue按ESC键是否可以关闭抽屉
footerboolean | HTMLElement | (() => HTMLElement)true抽屉底部,false表示不显示底部,true表示显示默认底部,HTMLElement或函数表示自定义底部
widthstring | numberundefined抽屉宽度,支持数字(px)和字符串形式的CSS值
heightstring | numberundefined抽屉高度,支持数字(px)和字符串形式的CSS值
animatedbooleantrue是否启用动画
transitionDurationnumber300抽屉动画时长(ms)
maskTransitionDurationnumber200遮罩层动画时长(ms)
zIndexnumberundefined抽屉的z-index值

Events

事件名说明回调参数
open抽屉打开时触发(value: boolean)
close抽屉关闭时触发(value: boolean)
ok点击确定按钮时触发-
cancel点击取消按钮或关闭抽屉时触发-

Slots

插槽名说明
default抽屉的默认内容
footer抽屉的底部内容,优先级高于footer属性

函数式API

showDrawer(options)

通过函数式API可以方便地在任何地方打开抽屉。

参数

参数名类型默认值说明
titlestring-抽屉标题
contentstring | HTMLElement | (() => HTMLElement)-抽屉内容
sizestring'md'抽屉尺寸,可选值:'sm', 'md', 'lg', 'fullscreen'
positionstring'right'抽屉位置,可选值:'left', 'right', 'top', 'bottom'
closablebooleantrue是否显示关闭按钮
maskbooleantrue是否显示遮罩层
maskClosablebooleantrue点击遮罩层是否可以关闭抽屉
escClosablebooleantrue按ESC键是否可以关闭抽屉
footerboolean | HTMLElement | (() => HTMLElement)true抽屉底部,false表示不显示底部,true表示显示默认底部,HTMLElement或函数表示自定义底部
widthstring | numberundefined抽屉宽度,支持数字(px)和字符串形式的CSS值
heightstring | numberundefined抽屉高度,支持数字(px)和字符串形式的CSS值
animatedbooleantrue是否启用动画
onOk() => void-点击确定按钮时的回调函数
onCancel() => void-点击取消按钮时的回调函数
onClose() => void-抽屉关闭时的回调函数

返回值

属性名类型说明
close() => void用于手动关闭抽屉的方法

示例

javascript
import { showDrawer } from '@/components/Drawer';

// 打开抽屉
const drawer = showDrawer({
  title: '示例抽屉',
  content: '这是一个抽屉示例',
  onOk: () => {
    console.log('点击了确定按钮');
  },
  onCancel: () => {
    console.log('点击了取消按钮');
  }
});

// 打开无遮罩层抽屉
const noMaskDrawer = showDrawer({
  title: '无遮罩层抽屉',
  content: '这个抽屉没有显示遮罩层',
  mask: false,
  position: 'right'
});

// 手动关闭抽屉
// drawer.close();