你怎么做div“tabbable”?

时间:2012-11-30 00:28:47

标签: html css xhtml

我有div元素的按钮,我想制作它们,以便用户可以按下键盘上的Tab键并在它们之间移动。我已经尝试将它们的文本包装在锚标签中,但它似乎不起作用。

有没有人有解决方案?

5 个答案:

答案 0 :(得分:94)

tabindex个属性添加到div个元素中。

示例:

<div tabindex="1">First</div>
<div tabindex="2">Second</div>

根据steveax的评论,如果您不希望标签顺序偏离元素在页面中的位置,请将tabindex设置为0

<div tabindex="0">First</div>
<div tabindex="0">Second</div>

答案 1 :(得分:5)

对于那些感兴趣的人,除了接受的答案之外,您可以添加以下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()
});

我确定有人将其变成了jq插件$()。makeTabStop

答案 2 :(得分:2)

tabindex="0"属性添加到您想要表格的每个div中。然后使用CSS伪类:hover和:focus,例如,向应用程序用户表示div处于焦点和可点击状态。使用JavaScript处理点击。

&#13;
&#13;
var doc = document;
var providers = doc.getElementsByClassName("provider");

for (var i = 0; i < providers.length; i++) {
    providers[i].onclick = function() {
      console.log(this.innerHTML);
    };
}
&#13;
.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);
}
&#13;
<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>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

使用jquery通过按键使元素可点击和可点击

假设

  • 所有属于不可粘贴,不可点击类型且应可点击的元素都具有 onclick 属性(可以将其更改为类或其他属性)
  • 所有元素都属于同一类型;我将使用divs。
  • 您正在使用jquery

示例html:

Object.keys(avatars).forEach(key => {  

jQuery代码: 这是页面加载后将运行的代码。它需要在您的HTML页面上运行。

...

<div onclick="clicked(this)">Button 1</div>
<div onclick="clicked(this)">Button 2</div>
<div onclick="clicked(this)">Button 3</div>

...

您可以找到一个有效的示例here

答案 4 :(得分:0)

对于出于相反目的出现在此页面上的任何人,例如使 div 标签不可制表:https://github.com/WICG/inert 是一个好方法。