tree · 树形视图

依据 APG Tree View。两条最关键的设计:
① Roving tabindex:整棵树只占一个 Tab 位(当前节点 tabindex=0,其余 -1)
② ←→ 展开/收起并带着焦点走(已收起时按 ← 回到父节点)
其余:↑↓ 移动 · HomeEnd 首末 · * 展开本层同级 · 空格 选中 · a-z 首字母跳转

1 · 文件树(试试键盘)

(焦点位置与选中项会显示在这里)

2 · 默认全部收起

对比:错写法 vs 本库写法

❌ 常见写法:靠"旋转"表示状态

三个节点长得一模一样:已展开的 src、收起的 components、叶子的 index.js 全是 ▸。旋转只能表达"变过",表达不了"现在是哪一态"。

✅ 本库:三态三种字形

tree.css 按 aria-expanded 给三种字形:▼ 展开 / ▶ 收起 / · 叶子。形状本身就是信息,不依赖动画。