javascript - React - ul li 列表上的键盘导航
问题描述
我有一个带有 ul li list 的项目列表,它通过 map 函数构建,看起来像 -
sizeData.map((size, index) => {
return (
<li
role="none"
className="size-dropdownlist__item"
key={sizeData.label}
onMouseOver={() => this.sizeDataHover(size.price)}
onFocus={() => this.sizeDataHover(size.price)}
>
<div className="size-dropdownlist__item____holder">
<a
role="menuitem"
aria-setsize={size.length}
aria-posinset={index + 1}
tabIndex="0"
aria-label={size.label}
href={size.URL}
onClick={(e) => { this.onSizeDataSelect(e, size.ID); }}
className={
classNames('size-dropdownlist__item____holder--link',
{
'holder--link-selected': size.isSelected
})
}
>
{size.label}
</a>
</div>
</li>
})
}
HTML 输出如 -
<ul className="size-dropdownlist">
<li className="size-dropdownlist__item">
<div className="size-dropdownlist__item____holder">
<a href="#" className="size-dropdownlist__item____holder--link">A</a>
</div>
</li>
<li className="size-dropdownlist__item">
<div className="size-dropdownlist__item____holder">
<a href="#" className="size-dropdownlist__item____holder--link">B</a>
</div>
</li>
<li className="size-dropdownlist__item">
<div className="size-dropdownlist__item____holder">
<a href="#" className="size-dropdownlist__item____holder--link">C</a>
</div>
</li>
<li className="size-dropdownlist__item">
<div className="size-dropdownlist__item____holder">
<a href="#" className="size-dropdownlist__item____holder--link">D</a>
</div>
</li>
<li className="size-dropdownlist__item">
<div className="size-dropdownlist__item____holder">
<a href="#" className="size-dropdownlist__item____holder--link">E</a>
</div>
</li>
<li className="size-dropdownlist__item">
<div className="size-dropdownlist__item____holder">
<a href="#" className="size-dropdownlist__item____holder--link">F</a>
</div>
</li>
</ul>
使用 CSS 我将其设置为两行,显示:flex。
|A|B|
|C|D|
|E|F|
现在我想通过键盘移动选定的项目,例如 - 如果用户将鼠标指针移动到 A 并向右按箭头,则 B 将显示已选中,如果用户按下箭头,则 C 已选中。同样,如果用户在 C 上按下向上箭头,它会移动到 A。
解决方案
推荐阅读
- java - 无法获取 getText()
- django - 带有外键的 Django 自定义用户。如何在表单中显示外键?
- python - python不会将rect识别为属性
- java - 是否可以重用模拟?
- php - Composer:只能安装以下之一:minishlink/web-push[v4.0.0, dev-master]
- sas - proc附加中的列(变量)顺序
- java - Spring谓词多个运算符
- wpf - 在 wpf 中以编程方式触发 Treview 项目选择事件
- unity3d - vuforia ARCamera 视频背景为黑色
- ajax - 在 WebSockets 之前,实时浏览器聊天是如何实现的?