我有div元素的按钮,我想制作它们,以便用户可以按下键盘上的Tab键并在它们之间移动.我已经尝试将其文本包装在锚标签中,但它似乎不起作用.
有没有人有办法解决吗?
Nep*_*eps 106
tabindex
向div
元素添加属性.
例:
<div tabindex="1">First</div>
<div tabindex="2">Second</div>
Run Code Online (Sandbox Code Playgroud)
根据steveax的注释,如果您不希望Tab键顺序偏离元素在页面中的位置,请将其设置tabindex
为0
:
<div tabindex="0">First</div>
<div tabindex="0">Second</div>
Run Code Online (Sandbox Code Playgroud)
对于那些感兴趣的人,除了接受的答案,你可以添加以下jquery,以便在选项卡时更改div样式,并处理Enter和Space以触发点击(然后你的点击处理程序将完成剩下的工作)
$(document).on('focus', '.button',function(){
$(this).css('border','1px dotted black')
});
$(document).on('keyup', '.button',function(e){
if(e.which==13 || e.which==32)
$(this).click()
});
Run Code Online (Sandbox Code Playgroud)
我确定有人把它变成了一个jq插件$().makeTabStop
将属性添加tabindex="0"
到您想要可选项卡的每个 div。然后使用 CSS 伪类 :hover 和 :focus 来向应用程序用户表示该 div 处于焦点并且可点击。使用 JavaScript 来处理点击。
var doc = document;
var providers = doc.getElementsByClassName("provider");
for (var i = 0; i < providers.length; i++) {
providers[i].onclick = function() {
console.log(this.innerHTML);
};
}
Run Code Online (Sandbox Code Playgroud)
.provider {
flex: 0 1 auto;
align-self: auto;
width: 256px;
height: 48px;
margin-top: 12px;
margin-right: 12px;
text-align: center;
line-height: 48px;
text-transform: uppercase;
background-size: contain;
background-repeat: no-repeat;
background-position: 10%;
background-color: gray;
}
.provider:hover{
cursor: pointer;
}
.provider:focus{
-webkit-box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4);
-moz-box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4);
box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4);
}
Run Code Online (Sandbox Code Playgroud)
<h4>Click in this area first then press tab</h4>
<div id="email" class="provider" tabindex="0">email</div>
<div id="facebook" class="provider" tabindex="0">facebook</div>
<div id="github" class="provider" tabindex="0">github</div>
<div id="google" class="provider" tabindex="0">google</div>
<div id="twitter" class="provider" tabindex="0">twitter</div>
Run Code Online (Sandbox Code Playgroud)