Skip to content

Drawer 抽屉

从屏幕边缘滑出的面板,适合设置菜单、玩家列表、详情面板和移动端导航。

右侧抽屉

vue
<script setup lang="ts">
import { ref } from 'vue'
const open = ref(false)
</script>

<template>
  <mc-button variant="primary" @click="open = true">打开设置</mc-button>
  <mc-drawer v-model:open="open" title="设置">
    设置内容
  </mc-drawer>
</template>

左侧抽屉

设置 placement="left" 可使抽屉从左侧滑出,适合导航菜单等场景。

html
<mc-button @click="leftOpen = true">打开菜单</mc-button>
<mc-drawer v-model:open="leftOpen" title="导航菜单" placement="left">
  <mc-list @change="(v) => console.log('点击了', v)">
    <mc-list-item label="首页" value="home" />
    <mc-list-item label="服务器列表" value="servers" />
    <mc-list-item label="玩家中心" value="players" />
    <mc-list-item label="设置" value="settings" />
  </mc-list>
  <mc-button variant="primary">新建存档</mc-button>
  <mc-button>加载存档</mc-button>
  <mc-button variant="error">删除存档</mc-button>
</mc-drawer>

顶部抽屉

设置 placement="top" 可使抽屉从顶部滑出。

html
<mc-button @click="topOpen = true">打开通知</mc-button>
<mc-drawer v-model:open="topOpen" title="系统通知" placement="top">
  暂无新通知
</mc-drawer>

底部抽屉

设置 placement="bottom" 可使抽屉从底部滑出,适合操作面板、移动端菜单等场景。

html
<mc-button @click="bottomOpen = true">打开操作面板</mc-button>
<mc-drawer v-model:open="bottomOpen" title="操作面板" placement="bottom">
  <mc-button variant="primary">新建存档</mc-button>
  <mc-button>加载存档</mc-button>
  <mc-button variant="error">删除存档</mc-button>
</mc-drawer>

Teleport 渲染位置

默认情况下抽屉使用 <Teleport to="body"> 将内容渲染到 <body> 末尾,避免被父容器 overflow: hidden 裁剪。

当抽屉放在固定高度的演示容器内(如 Layout 页面中的布局示例),需要设置 :teleport="false" 使其就地渲染,方可正确显示。

参考 Layout 页面 中的导航抽屉使用方式。

Props

名称类型默认说明
openbooleanfalse是否打开(v-model:open)
titlestring''标题
placement'left' | 'right' | 'top' | 'bottom'right出现位置
closeOnOverlaybooleantrue点击遮罩是否关闭
teleportstring | boolean'body'Teleport 目标选择器,传 false 则在父容器内就地渲染

Events

事件参数说明
update:openboolean打开状态变化
close-关闭抽屉

Slots

名称说明
default抽屉主体内容
header自定义头部
footer底部区域

MIT Licensed · 设计语言移植自 Spectrollay-McUI