K2.09.4disable rather than remove situational menu items设计研究

情境相关的菜单项应动态调整可用状态而非隐藏整项

别名: 菜单项禁用而非隐藏 · 灰显命令 · grayed-out menu item

概念解释

没选中文本时,「剪切」仍应出现在编辑菜单里,只是不能激活。按情境改可用状态、不把整项拿掉(disable rather than remove)是组织方法:命令留在原位,用禁用表达「现在做不了」。把它从菜单里删掉,人会以为产品没有这条命令,或以为自己记错了位置。菜单项必须与真实能不能执行一致,是另一条要求;这里谈的是不一致时该显示成禁用,而不是从清单里消失。权限上根本不该存在的入口,不在这条的范围。

机制

菜单既是执行器,也是地图。人靠位置记忆(编辑菜单中部、分隔线上方)找回命令。项的出现与消失会改地图的几何:后面的项上移,记忆坐标全部作废,低频用户尤其无法判断「没看见」是因为没有、还是因为今天情境不对。禁用把「存在」和「此刻可执行」拆开:名字还在,空间还在,不可用本身成为一条关于情境的说明——通常还缺选区、还没打开文档、还不能撤销。隐藏把这两件事焊在一起,地图在每一次选区变化里抖动。同步状态如果只做到「不能点的时候别点着」,仍可能用隐藏来实现同步;这条要求同步的实现选择禁用。

怎么研究

比较两种菜单:情境不满足时隐藏目标项,对比留在原位并禁用。任务包括「先不给选区,让人确认剪切在哪」再给选区执行。

自变量:不满足情境时隐藏还是禁用、禁用项是否附带原因、菜单长度是否因隐藏而明显缩短。 因变量:无选区时能否指出命令所在、选区出现后的命中时间、是否去别的菜单或设置里寻找「失踪」项、对「产品到底有没有剪切」的判断。

若任务书直接写「请剪切」,人会用力把项找出来,隐藏条件的发现失败会被低估。更稳的是先问「这个软件能剪切吗、在哪」,再进入操作。触屏长按菜单经常本来就短,隐藏的效果和桌面顶栏菜单不可比,要分开报。

边界

菜单已经长到必须滚动时,长期禁用的项会挤掉当前真正能用的项,这时可以把极少满足的项收到「更多」,但仍应在更多里禁用而不是删除,以免地图上出现空洞。安全上连名称都不能让当前用户知道的能力应隐藏——那是权限暴露,不是情境。上下文菜单按当前对象组装,本身就会换一套项,用户预期它是「针对这个对象」而不是一张稳定地图;顶栏菜单没有这个预期,更不能跟着选区删项。动画或游戏里按关卡解锁的能力,第一次出现用「从无到有」是叙事,之后仍应改成禁用,否则回关时地图又抖。

怎么落地

  • 顶栏菜单里随选区、文档、剪贴板变化的命令保持占位,情境不满足时禁用,不要从列表里拿掉。
  • 禁用项在能放下说明的地方写清缺什么(未选择、无文档、无可撤销),不要只变灰。
  • 同一条命令在工具栏按钮上若也禁用,两边一起变,不要菜单里消失、按钮上还亮着,或反过来。
  • 验证:清空选区,打开编辑菜单,剪切/复制必须仍在原位且不可激活。记下它们的上下邻居。再选中文本,邻居不应移动。找一个没见过该产品的人,在空选区时问「能不能剪切、在哪」——指向正确位置即地图还在;去设置里找,就是被隐藏教会了「没有」。

延伸

  • 同组K2.09.1 命令应按使用场景分组而非按开发模块分组 · K2.09.2 菜单层级过深会让低频功能实质上不可发现 · K2.09.3 命令命名需要与界面中其他位置的术语保持一致
  • 相邻K2.03 菜单栏 · E5.18 导航项的权限可见性
  • 站内检索grayed-out menu · disable versus hide · situational availability

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/K2.09.4