你怎么做一个div“tabbable”?
我有button,这是div元素,我想让他们,使用户可以按下他们的键盘上的标签键,并在他们之间移动。 我试过把它们的文字封装在锚点标记中,但似乎并不奏效。
有没有人有办法解决吗?
将tabindex
属性添加到div元素。
例:
<div tabindex="1">First</div> <div tabindex="2">Second</div>
根据steveax的评论,如果您不希望Tab键顺序偏离元素在页面中的位置,请将tabindex设置为0:
<div tabindex="0">First</div> <div tabindex="0">Second</div>
对于那些有兴趣的人,除了接受的答案,你可以添加下面的jquery,以使div样式改变,当你选中它,还处理回车和空间触发点击(然后你的点击处理程序将完成其余的)
$(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() });
我敢肯定有人已经做成了一个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); }; }
.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); }
<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>