C1.10.1Context-sensitive menu设计研究

上下文菜单的内容随作用对象变化

别名: 右键菜单 · context menu · contextual actions

概念解释

上下文敏感菜单(context-sensitive menu)根据用户当前指向或选中的对象提供与之相关的操作。文件、文本、图形节点和空白画布可显示不同菜单,因为可执行动作取决于对象类型、状态、权限和选择集合,而不是屏幕上的固定位置。

机制

触发菜单时系统先解析作用对象和当前状态,再从可用命令中筛选、排序并展示。这样把低频但对象特定的操作放在使用点附近,减少前往全局工具栏的距离;代价是菜单内容会变,用户需要理解当前命令作用于哪个对象。

再往下一层看"解析作用对象"具体解析的是什么:不是单一对象,而是一个三元组——目标类型(文件/文件夹/文本/形状)、目标状态(只读/已锁定/正在编辑)、当前选择集合(单选/多选/空选)。三者的排列组合意味着同一个右键位置在不同时刻可能弹出结构完全不同的菜单,这正是上下文菜单相比固定菜单栏的根本差异:菜单栏的命令集合只由应用状态决定,上下文菜单的命令集合由"应用状态 × 当前对象"共同决定,维度多了一层,菜单设计者必须为组合空间的每个格子都定义清楚"这里应该出现什么",而不能只设计一份通用列表再挖空不适用的项——挖空式设计是多选和混合类型选择时命令错乱的最常见成因。

怎么研究

在不同对象、选择数量、权限状态和空白区域中测试命令发现、误作用对象、完成时间和菜单关闭率。应观察用户是否在打开菜单前已正确选中目标,以及菜单是否暗示了实际作用范围。一个容易被忽略的变量是"混合选择"——同时选中一个文件和一个文件夹、或者选中的对象里有的可编辑有的只读,此时菜单该显示交集命令还是并集命令,是两种设计哲学在负荷测试下才会显性化的分歧点,单类型选择的实验设计测不出这个问题。

边界

上下文变化不应让同名命令在相似对象上有相反后果,也不应隐藏用户必须经常使用的功能。多选、嵌套对象和无对象空白区尤其容易产生作用范围歧义——例如在树形结构里右键一个已展开的父节点,"删除"到底作用于该节点还是连带其展开的子树,若菜单没有额外说明,用户只能凭经验猜测,猜错的代价可能是不可逆操作。菜单也不是替代全局导航的容器:把整个功能面都塞进右键,会让不熟悉右键操作或使用键盘/触屏的用户完全找不到入口。

怎么落地

  • 在菜单标题、对象高亮或命令文案中明确当前作用对象和选择范围,混合类型选择时用文案显式说明命令的作用边界(如"删除 3 个项目"而非笼统的"删除")。
  • 只放对象特定、低频或近距离有价值的命令,保持同类对象的排序稳定,避免同一命令在不同对象上出现在不同位置。
  • 验证办法:对单选、多选、混合类型选择、空白区和权限受限对象分别录制菜单内容与命令生效范围,检查是否存在"菜单看起来能点,点了却对非预期对象生效"的情况。

延伸

  • 同组C1.10.2 菜单项数量增长时查找成本超过菜单收益 · C1.10.3 上下文菜单的功能不能只存在于右键路径
  • 相邻C1.07 单击与双击 · E1 界面元素与控件
  • 站内检索context-sensitive menu · mixed selection · command scope

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C1.10.1