G3.10.3disable zero-count facet values设计研究

分面计数为零的项应禁用而非隐藏

别名: 零计数禁用 · grayed-out facets · 分面可见性

概念解释

当前约束下某取值的命中数为零,这个取值不该再被点,但也不该从列表里消失。禁用零计数项(disable zero-count facet values)保留类目的可见性:人仍能看见「品牌 X 是这个面的一员」,只是此刻走不通,通常灰显并标 0。藏起来会让人以为该类目从未存在,或以为自己记错了馆藏。

这和「不要让用户组成空集」不是同一条设计。后者关心组合能不能被走完,抑制手段可以是禁用也可以是摘掉。这里固定选禁用,关心的是类目作为导航地标还在不在。库存暂时为零、被别的约束切光,地标都应还在。

机制

分面列表同时承担两份工作:告诉人「还能往哪走」,以及告诉人「这个世界里有哪些取值」。计数为零关掉的是第一份工作,不该顺便拆掉第二份。人用列表的完整性来建立馆藏模型——有过「红色 / 蓝色 / 绿色」,绿色某天变成 0,列表里还在,模型是「今天没货」;绿色从列表蒸发,模型变成「这里不卖绿的」,后续任务会改口或改去别的面。

隐藏还会破坏扫描稳定性。取值的位置随约束跳来跳去,眼睛无法在同一槽位核对「我要的那个还在不在」。禁用保持槽位,把变化限制在状态(可点 / 不可点)和数字(N / 0)上,工作记忆只需更新可达性,不必重建类目名单。

怎么研究

把「灰显并留在原位」和「从列表移除」当成两种导航反馈,而不是同一种抑制。

  • 范式:同一分面集,一种条件把零计数取值灰显留 0,另一种直接不渲染;任务里包含「确认某已知品牌是否仍在该类目中」。Hearst 对分面可用性的讨论把可见的空值当作地标,而不是噪音。
  • 自变量:零计数项的呈现(禁用 / 隐藏)、是否显示 0、列表顺序是否因隐藏而压缩。
  • 因变量:误判「该类目不收录该值」的比例、找回该值所需的撤销步数、扫描同一面的时间、对「系统是不是出错了」的归因。
  • 方法论注意点:问的是类目模型,不是空集次数。走入空集是另一条问题。实验室若用被试不熟悉的虚构品牌,隐藏的伤害会被低估——伤害发生在人已经知道该值应该存在的时候。

边界

取值基数极大(全球全部品牌、全体作者)时,留下全部零计数项会让列表不可扫,需要按「当前非零 + 用户最近用过的零项」分层,而不是一刀全藏或全留。逻辑上不可能的组合(分类法自己打架)与库存为零应区分:前者修模型,不必永久占着导航槽;后者才是禁用。无障碍环境里「禁用」必须仍能被读出来并说明不可用原因,否则对辅助技术用户等于隐藏。

怎么落地

  • 约束变化后重算每个取值的计数;为零则灰显、不可点、保留标签,不要从 DOM 里摘掉。
  • 在取值旁标 0 或「与当前条件无交集」,避免被理解成控件坏了。
  • 超长面把零项沉到列表底部或「当前不可用」分组,仍允许搜索定位到它。
  • 验证:先让用户看见某品牌可点,再加一道会把它切到 0 的约束。品牌应仍在原面、只是不能点。若列表里找不到,用户又说「看来不卖这个牌子」,就是藏过头了。

延伸

  • 同组G3.10.1 分面把筛选与浏览合并 · G3.10.2 分面数量过多会淹没主内容
  • 相邻G1.06 分面分类 · G3.07 零结果处理 · G3.08 筛选器
  • 站内检索zero-count facet · disabled facet value · faceted navigation

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/G3.10.3