返回知识库

界面与交互 · 反馈与临时层

抽屉Drawer

从屏幕边缘滑出的临时面板,保留背后页面上下文,承载辅助查看或次要任务,用完即关、焦点回到触发器。

先打开抽屉,再看列表行和焦点怎么变

一台项目列表详情抽屉实验台:点「打开详情抽屉」看它从所选侧滑出、背后列表仍可见;改标题或状态后分别走「确认保存/取消/Esc/点遮罩」四条出口,看列表行物件是否随确认更新、焦点是否回到触发按钮;切换「左侧/右侧」看滑出方向。

第 0 步:这是一份项目列表。点「打开详情抽屉」看它从所选侧滑出、背后列表仍可见;改标题或状态后分别试「确认保存」「取消」「Esc」「点遮罩」四条出口,观察列表行物件是否随确认更新、焦点是否回到触发按钮;切「左侧/右侧」看滑出方向。

滑出侧别
项目列表(始终可见)
活动报名页草稿
会员中心改版进行中

对照:抽屉未打开,列表行「活动报名页 · 草稿」是当前项目。原因:抽屉保留背后上下文,列表始终可见。下一步:点「打开详情抽屉」看它从所选侧滑出,或先切「左侧/右侧」改滑出方向。

从刚才的操作里提炼

你在实验台上看到的就是抽屉的核心;下面只是把它命名清楚。

  • 抽屉从屏幕边缘滑出:实验台里切「右侧/左侧」后再打开,面板从对应边缘滑入——这是它与居中弹出的 modal 最直观的差别。
  • 保留背后上下文:抽屉打开时列表行始终可见,半透明遮罩只降注意力、不完全遮挡;适合「边看边操作」的辅助任务。
  • 三条关闭出口同属放弃,确认才提交:取消、Esc、点遮罩都把草稿丢掉、列表行不变;只有「确认保存」会更新列表行物件本身——结果长在物件上。
  • 焦点有进有出:打开后焦点进入抽屉的标题输入框;关闭后焦点回到「打开详情抽屉」触发按钮,不丢失键盘位置。
  • dialog 语义 + 半透明遮罩:容器用 role="dialog"aria-modal="true" 并关联标题与描述;遮罩比 modal 轻,点即可关。

什么时候用抽屉

从用户信号判断,也要分清它与 modal、popover、sidebar 的边界。

  • 用:列表或表格行点开「看详情/轻编辑」,又不想离开主列表、想保留比较上下文。
  • 用:侧层面板式的筛选、设置、帮助,用完即关,不需要常驻。
  • 区分 Modal:需要居中遮罩、强制决策、打断主流程(如删除确认)时用 Modal;抽屉不打断、可边看边操作。
  • 区分 Popover:锚点旁的轻量小气泡(如资料卡、行内提示)用 Popover;抽屉是大面积侧滑面板,常带遮罩。
  • 区分 Sidebar:页面常驻布局、持久可见用 Sidebar;抽屉是临时唤出、用完关闭。
  • 不用:高风险不可逆确认(→ Modal 或独立页)、整页结果(→ Result)、一闪而过的反馈(→ Toast)。

怎么用:从触发器到回到触发器的最短路径

一次到位的检查顺序。

  1. 定触发器:列表行或按钮打开抽屉;触发器要能重新获得焦点。
  2. 定侧别与宽度:按内容和空间选左/右(或上/下),窄屏可接近全屏,但仍留明确关闭入口。
  3. 加语义:抽屉容器用 role="dialog"aria-modal="true",关联标题与描述;背后内容用 inert 或焦点陷阱防止键盘误操作。
  4. 管焦点:打开后焦点进入抽屉首个控件;Esc、关闭按钮、点遮罩都能退出;关闭后焦点回到触发器。
  5. 分清出口语义:确认才提交并更新背后物件;取消/Esc/遮罩都放弃草稿;状态反馈说明结果,不只靠动画。

正反例:同一个「列表看项目详情」,只改一处

只改变「是否保留列表上下文」,看用户后果如何不同。

正例右侧抽屉保留列表,看完即关

点列表行从右侧滑出抽屉,列表始终可见、半透明遮罩可点关闭;确认才更新那一行,取消/Esc 放弃——用户在比较多个项目时不会失去上下文。

反例整页跳转离开列表

点同一行直接跳到独立详情页,列表消失了;想对比下一个项目得反复返回。或用居中 modal 盖住整屏,也遮掉了列表——这是 modal 的强制决策场景,不是抽屉的辅助查看。

快速自测

用户在抽屉里把标题改了,但点了「取消」。列表里那一行应该显示什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。