命令面板
Command Palette
按一个快捷键弹出一个搜索框,敲几个字就能跳到任何功能。
- 又叫:
- 命令面板
- 快捷搜索框
- ⌘K 面板
- command palette
- command menu
- quick switcher
- spotlight search
- 展厅
- 交互反馈
- 形态
- 指针交互
- 播放
- 手动触发
- 关键词
- 需要 JS / 有状态 / 会引发重排 / 键盘可用 / 可以直接用
参数工作台
复制给 AI
随参数实时更新做一个命令面板(command palette):按 ⌘K / Ctrl+K(同时支持 /)打开浮层搜索框,输入时做模糊过滤,最多显示 6 条,上下键移动高亮、回车确认并执行、Esc 关闭,打开时焦点进输入框、关闭后还给触发按钮;当前项用 aria-selected 或 aria-activedescendant 标出,进出场 150ms 缩放加淡入;prefers-reduced-motion 下只做透明度切换。
command palette overlay, meta+k / ctrl+k plus / shortcut, live fuzzy filter over commands, top 6 results, arrow keys move the highlight, Enter runs the command, Escape closes, focus moves into the input on open and back to the trigger on close, aria-selected / aria-activedescendant on the active row, 150ms scale and fade in and out, opacity only under prefers-reduced-motion
https://publieople.github.io/design-museum/entry/command-palette/?stage=light
链接带着你调好的参数
什么时候用
- 功能多到侧栏或顶部导航塞不下的后台、编辑器、工具型产品
- 想让熟练用户完全不离开键盘就能跳转(⌘K / Ctrl+K)
- 需要把「命令」和「跳转」放在同一个入口里检索
适用场景:导航 / 页面 / 表单
推荐取值
- 快捷键
- ⌘K(macOS)/ Ctrl+K(Windows、Linux),同时支持 /
- 结果条数
- 8–12 条,超出就滚动而不是全塞
- 过滤
- 按输入实时过滤,空格分词做模糊匹配
- 键盘
- ↑↓ 移动、Enter 确认、Esc 关闭、Tab 不离开面板
- 进出场
- 120–200ms,缩放到 0.96 → 1 加透明度
别搞混
和「搜索框」的区别
搜索框在页面里占位置、搜的是内容;命令面板是浮层、搜的是动作与位置,选中就直接执行或跳转,还会把快捷键写在行尾。
和「下拉选择」的区别
下拉选择是「从有限选项里挑一个」;命令面板的结果是动态过滤出来的,而且键盘导航(上下键选中、回车确认、Esc 关闭)是它的核心而不是附加功能。
容易踩的坑
- 键盘导航不能省:上下键移动、回车确认、Esc 关闭,否则命令面板就只是个搜索框
- 打开时立刻把焦点放进输入框,关闭后要把焦点还给触发它的按钮,不然键盘用户会迷路
- 结果列表要限制条数(8–12 条)并高亮当前项,用 aria-activedescendant 或 aria-selected 标出来
- ⌘K / Ctrl+K 要自己监听 keydown(preventDefault,别让浏览器抢走),忘记绑定就会出现「快捷键没反应」
- 浮层要用 z-index 与位置锚定拿住层级,别让页面里的 sticky 元素盖在上面
- prefers-reduced-motion 下关掉进出场缩放,只做透明度切换
无障碍降级
prefers-reduced-motion 下不要做缩放与位移,只保留 100ms 以内的透明度切换。
关键词
- command palette
- command menu
- role="listbox"
- aria-activedescendant
- meta+k
- fuzzy filter
- focus trap
- z-index overlay