跳到正文
GitHub

浮层

Dialog

一个模态表面:portal、遮罩、居中面板。

示例

default

说明

Radix Dialog 的根节点、触发器和关闭按钮,以带类型的原样透传再导出。

属性

这个组件没有自己的属性。

组成部分

Composed at the call site rather than configured through props, so a layout this component did not anticipate is still expressible.

DialogContent

一块模态表面:portal → 遮罩 → 居中面板。

焦点陷阱、Escape 键、滚动锁定和 aria-modal 的接线都归 Radix 管——这些每一项手搓的对话框都会微妙地做错,通常是把焦点留在了底下的页面里。

不管显不显示,Radix 都要求有一个 Dialog.Title,所以一个没有可见标题的对话框仍然会渲染一个隐藏的,而不是打一条警告然后交付一个没有名字的模态。

DialogContent props
属性类型默认值说明
classNamestring
descriptionReactNode标题下面的副标题。
hideTitlebooleanfalse保留给辅助技术的标题,但在视觉上隐藏它。 用于那些看得见的人一眼就明白用途的表面——命令面板、图片灯箱——在那里印一个标题只是多余的家具。标题本身从来不是可选的:Radix 要求有一个,而一个没有可访问名称的模态,会把读屏用户丢进一个无名的区域里。
showClosebooleantrue显示右上角的关闭控件(默认 true)。
titleReactNode标题文字。不传时会渲染一个视觉隐藏的标题,供无障碍使用。

同时接受 Omit<ComponentProps<typeof DialogPrimitive.Content>, 'title' | 'className'> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

再导出

Dialog = DialogPrimitive.Root

Radix Dialog 的根节点、触发器和关闭按钮,以带类型的原样透传再导出。

DialogTrigger = DialogPrimitive.Trigger
DialogClose = DialogPrimitive.Close

键盘操作

Dialog keyboard interactions
按键作用
Escape关闭对话框,焦点回到它来的那个触发器。
Tab在对话框内部循环;打开期间焦点出不去。

无障碍

  • 焦点陷阱、Escape、滚动锁定和 aria-modal 都由 Radix 负责。
  • 没有可见标题的对话框仍然会渲染一个隐藏标题,而不是交付一个没有名字的模态。