E2.16.1autocomplete occlusion of input设计

候选列表不得遮挡正在输入的内容

别名: 补全遮挡输入框 · typeahead overlay · 下拉盖住槽

概念解释

自动补全一边打字一边弹出候选。列表若盖住槽里正在写的字、光标或格式提示,人就看不见自己刚打了什么,也无法把输入和候选对照。补全遮挡输入(autocomplete occlusion of input)要求列表避开仍在编辑的那一块:通常向下展开,空间不够就向上,但槽本身始终露着。它管的是输入区的可见性,不是候选项顺序会不会在指针下改写,也不是能不能用键盘上下走。

机制

对照是补全的核心操作:槽内前缀对列表里的完整项。遮住前缀,对照只剩记忆,人会选一条「看起来像」但前缀已经改过的项,或反复把列表关掉以确认自己写了什么。移动端键盘升起后,视口只剩一条缝,向下展开的列表更容易压住槽。绝对定位到视口中心的「优雅」面板同样会盖住字段。遮挡还切断编辑:要改已经打错的字母,得先关掉列表,代价被当成补全不好用。列表可以盖住无关的页脚,不能盖住它正在补的那一行。

边界

槽在屏幕最底部、下面没有空间时,列表只能向上,仍须把槽留在列表之外,而不是把列表叠在槽上。全屏搜索页把槽钉在顶、列表占满其余,这是同页分区不是遮挡。候选若渲染在槽内(行内补全的灰色后缀),那是另一套控件,只要后缀不挡住光标和已输入字符即可。放大字体后槽变高,原先「在下方」的坐标可能已经叠进槽里,要按实际槽盒重算。

怎么落地

  • 把列表锚在槽的外缘,默认向下;下边不够就向上翻,计算时用槽的实时盒子,不要盖住槽。
  • 键盘升起后把槽滚进剩余视口,再展开列表,避免列表与键盘一起把槽挤没。
  • 不要为了设计把列表做成覆盖整页、槽在下层的模态。
  • 验证:打几个字,看槽内字符、光标、槽外标签是否仍完整可见。任何一截被列表裁掉,就是遮挡。再在屏幕底边的字段和手机键盘升起时各测一次。

延伸

  • 同组E2.16.2 候选顺序变化会导致误选 · E2.16.3 必须支持键盘上下选择与确认
  • 相邻E2.10 搜索输入框 · E4.12 弹出层
  • 站内检索autocomplete occlusion of input · typeahead overlay · combobox popup

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E2.16.1