跳到正文
GitHub

容器

AppShell

桌面上两栏,手机上一栏加抽屉。

示例

default

production

Content well

说明

桌面两栏,手机一栏加一个抽屉。

抽屉除了点遮罩,按 Escape 也能关,因为一个只能靠“点外面”关掉的抽屉,会把键盘用户困在一个出不来的菜单里。遮罩是 <button> 也是同一个理由——带 onClick<div> 键盘够不着,也不会被念成任何东西。

属性

AppShell props
属性类型默认值说明
children必填ReactNode
sidebar必填ReactNode侧栏里的导航内容(比如一叠 `NavItem`)。
brandReactNode可选的品牌标识,钉在侧栏顶部。
contentAs'main' | 'div'内容区渲染成哪个元素。 应用的外壳用 `main` 是对的,也是默认值。一个文档里只能有一个 `main` 地标,所以当 AppShell 被放进另一个页面里时——文档站上的预览、截图工具——必须传 `div`,否则页面上就有两个,辅助技术再也回答不了“内容在哪”。
topbarReactNode顶栏里的可选内容,排在移动端开关之后。

同时接受 HTMLAttributes<HTMLDivElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

无障碍

  • 抽屉除了点遮罩,也能用 Escape 关闭,所以键盘用户不会被困在里面。
  • 遮罩是 <button>,因为带 onClick 的 div 既够不到也不会被播报。