K5.01.2spatial navigation设计研究

焦点移动路径需符合空间直觉

别名: 空间导航 · 二维焦点遍历 · focus search · D-pad spatial map

概念解释

按向右,焦点应当落到视觉上在右边的那一个邻居,而不是跳到下一行开头、跳进看不见的叠层、或绕到屏幕另一头的「下一个 DOM 节点」。这种按几何邻接而不是按文档顺序走的移动叫空间导航(spatial navigation)。人在沙发上眼睛盯着海报墙,手在方向键上做的是「往那边挪一格」,不是「走焦点序列的下一项」。

机制

方向键在用户模型里编码的是屏幕平面上的方向,不是树的先序遍历。视觉上的邻居若在焦点图里不相邻,按键结果会落到视线之外,人必须先找回焦点再重新瞄准。不规则网格、横滑排与竖滑列交叉、卡片大小不一、以及把「下一个」硬编码成列表下标,都会制造这种错位。

焦点图是一张有向图:每个可聚焦节点对上、下、左、右至多各有一条出边。边的生成如果按包围盒中心角、重叠投影或作者手写 nextFocus,三种规则在同一屏上混用,同一方向会在不同区域表现不同。嵌套容器更糟:焦点被锁在一行里出不去,或一按就越过整块区域落到页脚。

空间直觉还包括边界。走到最右再按右,是停住、循环回最左,还是滑出这一行进入下一行,三种结果都「合法」,但必须和这一屏看起来像什么一致:海报墙循环、设置列表停在端点,混用就会让人觉得键坏了。

怎么研究

空间导航任务:在真实或纸面的电视布局上指定起点与终点,只允许四向键,记录实际路径与「按视觉邻居走」的最短路径差多少步、中间有几次焦点出现在被试没在看的地方。

自变量:布局规则程度(规整网格 / 大小混杂卡片 / 横竖嵌套)、焦点图生成规则(几何投影 / DOM 顺序 / 手写边)、边界策略(钳位 / 循环 / 换行)。 因变量:多余按键数、离视线跳转次数、到达时间、口头报告的「它跑哪去了」。

注意实验室里的目标是主试指定的,人会盯着终点规划路径;真实客厅里人边看内容边挪,突然跳到页脚的代价更高。算法论文里的最优焦点图不等于用户的几何邻居——优化的是图论距离,不是那一块海报的中心是否在按键方向的视锥里。

边界

单列设置页几乎没有二维邻居问题,上下走列表就够,强行补左右边会把人送进侧栏。触控板或空鼠一旦给出连续指针,空间导航退居备用,边怎么连变得不重要。焦点顺序若服务于屏幕阅读器,文档顺序与视觉顺序冲突时,电视的「看的人」和「听的人」需要的图不一样,不能用同一张手写边应付两种用户。动态插入的广告卡会在两次按键之间改写邻居,空间记忆会在几秒内过期。

怎么落地

  • 按屏幕几何生成四向邻居:取当前焦点在该方向上投影重叠最大、中心夹角最小的可见可聚焦项,不要按 DOM 或数据下标串起来。
  • 同一屏只选一种边界策略,并让布局把策略说出来:循环的行在视觉上要能看出是环,列表的端点要停得住。
  • 横滑内容行与页级上下导航分开:在一行里左右走卡片,按上下才离开这一行;不要在行的末张卡片再按右就掉进下一行第一张。
  • 验证:从每个可聚焦项分别按一次四向,看落点是不是眼睛认为的邻居。把每一次「它跑哪去了」标成缺陷,而不是靠多按几次方向键凑过去。

延伸

  • 同组K5.01.1 没有指针,只有当前焦点 · K5.01.3 焦点必须始终清晰可见
  • 相邻J3.02 焦点顺序与焦点陷阱 · C6.22 焦点顺序与键盘导航 · F1.01 操作点与作用对象的距离
  • 站内检索spatial navigation · focus search · D-pad

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/K5.01.2