完整的网站控制与键盘(无鼠标)
full website control with keyboard (no mouse)?
所以我开始创建一个网站(html,css,js..),我想设计我的网站,这样没有鼠标(只有键盘)的人就可以使用它。
如果我有一个div
或li
元素,我如何使用键盘上的选项卡或向下箭头使其聚焦?
示例:
<ul class="nav-ul">
<li>
<a href="" class="nav-link" id="link-home">1
<img src="assets/home.png">
</a>
</li>
<li>
<a href="" class="nav-link" id="link-home">2
<img src="assets/home.png">
</a>
</li>
<li>
<a href="" class="nav-link" id="link-home">3
<img src="assets/home.png">
</a>
</li>
<li>
<a href="" class="nav-link" id="link-home">4
<img src="assets/home.png">
</a>
</li>
<li>
<a href="" class="nav-link" id="link-home">5
<img src="assets/home.png">
</a>
</li>
<li>
<a href="" class="nav-link" id="link-home">6
<img src="assets/home.png">
</a>
</li>
<li>
<a href="" class="nav-link" id="link-home">7
<img src="assets/home.png">
</a>
</li>
在这里,我希望每个li
元素在键盘上按下向下箭头时获得焦点。
编辑:tabindex
不工作!我尝试了很多不同的方法。我想有相同的效果,当我悬停在它上面时。
编辑2
所以我会把我的问题说清楚。我不想使用标签,但它将是一个D字(左,右,上,下箭头)。
谢谢。
tabindex
属性。
<li>
<a href="" class="nav-link" id="link-home" tabindex='7'>7
<img src="assets/home.png">
</a>
</li>
查看此处的一些示例
编辑使用左右箭头导航:
document.addEventListener("keydown", function (e) {
var focused = document.activeElement || document.body,
focusables= document.getElementsByClassName("focusable"),
len = focusables.length,
step = 0;
focusables = Array.from(focusables).sort(function(a,b) {
return parseInt(a.tabIndex) - parseInt(b.tabIndex);
});
if (e.keyCode === 39) {
step = 1
}
if (e.keyCode === 37) {
step = -1
}
if (focused.tabIndex <0 || focused.tabIndex === len - 1 && step === 1)
focusables[0].focus()
else if (focused.tabIndex === 0 && step === -1)
focusables[len-1].focus()
else
focusables[focused.tabIndex+step].focus()
});
你需要做的任何事情都是让你的元素像这样:
<a href="" class="nav-link focusable" id="link-home" tabindex="0">1
<img src="assets/home.png">
</a>
添加类focusable
并设置tabindex
工作示例
这就是您想要的吗?
var target = 1;
downarrow();
uparrow();
function downarrow() {
$(document).keydown(function(e){
if (e.keyCode == 40) {
$('#' + target).addClass('active');
$('#' + target).focus();
$('a').not($('#' + target)).removeClass('active');
target++;
}
if (target === 8) {
target = 1;
};
});
};
function uparrow() {
$(document).keydown(function(e){
if (e.keyCode == 38) {
target--;
if (target === 0) {
target = 7;
};
$('#' + target).addClass('active');
$('#' + target).focus();
$('a').not($('#' + target)).removeClass('active');
}
});
};
a.active {
background-color: #b2b2b2;
outline: 1px solid red ;
}
a {
display: inline-block;
width: 100%;
height: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="nav-ul">
<li>
<a id="1" href="" class="nav-link" id="link-home">1
<img src="assets/home.png">
</a>
</li>
<li>
<a id="2" href="" class="nav-link" id="link-home">2
<img src="assets/home.png">
</a>
</li>
<li>
<a id="3" href="" class="nav-link" id="link-home">3
<img src="assets/home.png">
</a>
</li>
<li>
<a id="4" href="" class="nav-link" id="link-home">4
<img src="assets/home.png">
</a>
</li>
<li>
<a id="5" href="" class="nav-link" id="link-home">5
<img src="assets/home.png">
</a>
</li>
<li>
<a id="6" href="" class="nav-link" id="link-home">6
<img src="assets/home.png">
</a>
</li>
<li>
<a id="7" href="" class="nav-link" id="link-home">7
<img src="assets/home.png">
</a>
</li>
https://jsfiddle.net/jpjr1nbt/5/
备注:
如果您还希望向上箭头向上滚动。密钥代码是38
相关文章:
- 完整的网站控制与键盘(无鼠标)
- 将键盘和鼠标事件从一个浏览器选项卡发送到另一个
- 如何存储鼠标&键盘事件和值
- 将键盘快捷方式关联到鼠标事件的方法
- 是否可以在 NodeJS 中模拟键盘/鼠标事件
- 网页中的鼠标光标或键盘响应
- Javascript Trigger onChange 无需执行鼠标或键盘
- Node js 捕获键盘按下和鼠标移动(不在 Web 浏览器上)
- 使用键盘和鼠标更改字体大小
- 如何识别复选框是通过鼠标还是键盘选中的
- 鼠标焦点上没有轮廓,但键盘焦点上仍然有轮廓
- 在计算器中使用键盘键而不是鼠标
- 在键盘上的鼠标光标处淡入淡出潜水[Javascript/JQuery]
- 二次曲线:替换鼠标单击的键盘笔划
- 当用户使用鼠标滚动或键盘时,覆盖Fullpage.js中的自动滚动
- 如何查找导致IE中选择框的onChange事件的原因-键盘或鼠标
- "禁用“;(灰色文本,没有鼠标/键盘)jQueryUI小部件和容器中的常规HTML
- 监听电子应用程序外部的键盘事件和鼠标移动
- 是否有任何javascript库来捕获鼠标/键盘事件并将它们发送到外部服务器
- 如何检查上下文菜单事件是从鼠标或键盘触发的jquery