Drawer

用于可通过滑动关闭的临时任务面板,尤其适合触屏。

预览

个人资料设置抽屉

打开带说明和关闭按钮的个人资料面板,或向下滑动关闭。

正在加载预览。

安装

首次使用此 Registry?请先完成 基础配置与共享样式安装 。

npx shadcn@latest add @neumorphism-ui/drawer

先安装一次共享 base,然后使用 CLI 添加组件及其依赖。

个人资料设置抽屉

npx shadcn@latest add @neumorphism-ui/drawer @neumorphism-ui/button
Registry JSON

用法

在 Drawer 中组合触发器、内容、头部、标题和说明。通过 swipeDirection 指定方向,并在手势之外提供明确的关闭按钮。

"use client";

import { Button } from "@/components/ui/button";
import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from "@/components/ui/drawer";

export default function Example() {
  return (
    <Drawer swipeDirection="down">
      <DrawerTrigger render={<Button />}>Quick settings</DrawerTrigger>
      <DrawerContent>
        <DrawerHeader>
          <DrawerTitle>Quick settings</DrawerTitle>
          <DrawerDescription>Adjust options without leaving this page.</DrawerDescription>
        </DrawerHeader>
        <DrawerFooter><DrawerClose render={<Button />}>Done</DrawerClose></DrawerFooter>
      </DrawerContent>
    </Drawer>
  );
}

API 参考

使用 Base UI Drawer 的手势和焦点管理。Sheet 适合固定任务面板,而 Drawer 更适合可滑动关闭或从不同方向打开的临时触控界面。

组件属性类型默认值说明
DrawerswipeDirection"down" | "up" | "left" | "right""down"设置打开、关闭和滑动方向。
Draweropen / onOpenChangeboolean / (open: boolean) => void—控制 Drawer 的打开状态。
DrawersnapPointsnumber[]—按需配置中间停靠点。
DrawerTriggerrenderReactElement—将现有 Button 或其他元素组合为触发器。
DrawerContentclassNamestring | (state) => string—在保留方向和手势行为的同时扩展面板样式。

无障碍

  • 01

    提供 DrawerTitle 和 DrawerDescription,让辅助技术识别已打开面板的用途。

  • 02

    模态 Drawer 打开时应隔离背景内容与焦点,并支持 Escape 关闭。

  • 03

    不要把滑动作为唯一关闭方式;同时提供明确的 DrawerClose 控件。