Skip to content

gridKeyboardNav

网格式列表的键盘方向导航:由方向键解析位移并计算下一选中索引。

函数签名

typescript
type GridKeyboardNavDirection = 'up' | 'down' | 'left' | 'right'

function gridKeyboardDirectionFromKey(key: string): GridKeyboardNavDirection | null
function measureGridColumnsByOffsetTop(items: ArrayLike<{ offsetTop: number }>): number
function measureGridColumns(gridEl: { querySelectorAll: ... }, itemSelector: string): number
function resolveGridKeyboardNavIndex(
  currentIndex: number,
  direction: GridKeyboardNavDirection,
  itemCount: number,
  columns: number,
): number | null

参数

函数参数说明
gridKeyboardDirectionFromKeykey键盘 event.key,仅识别四个方向键
measureGridColumnsByOffsetTopitems按首行 offsetTop 统计列数
measureGridColumnsgridEl, itemSelector在容器内查询子项并统计列数
resolveGridKeyboardNavIndexcurrentIndex, direction, itemCount, columns计算下一索引,无法移动返回 null

返回值

函数类型说明
gridKeyboardDirectionFromKeyGridKeyboardNavDirection | null非方向键返回 null
measureGridColumns*number至少为 1
resolveGridKeyboardNavIndexnumber | null新索引或边界外 null

工作原理

  1. 列数测量:首行连续相同 offsetTop 的元素个数即为列数。
  2. 索引映射col = index % columnsrow = floor(index / columns)
  3. 位移规则:左右移 ±1;上移 -columns;下移 +columns,且不超过 itemCount - 1
  4. 边界:已在边缘或目标越界时返回 null,由调用方忽略按键。