2012-11-30 15 views
51

私はdiv要素であるボタンを持っており、ユーザーがキーボードのタブキーを押してそれらの間を移動できるようにしたいと考えています。アンカータグでテキストを折り返してみましたが、うまくいかないようです。divを「tabbable」にするにはどうすればよいですか?

解決方法はありますか?

+0

?またはdivs? – Dancrumb

+2

アンカーに 'href'属性がある場合、それはうまくいくはずです。アクティベーション可能な項目が実際に何かをしない限り、マークアップの適切な使用である場合とそうでない場合があります。 –

+0

質問があります http://stackoverflow.com/questions/3059203/tab-index-on-div – ntgCleaner

答えて

71

div要素に属性tabindexを追加します。

例:あなたは要素がページ内にあるところから逸脱するタブオーダーをしたくない場合はsteveaxさんのコメントパー

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

は、0にtabindex属性を設定します。

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

NB:tabindexは、HTML <5のdivの有効な属性ではありません。 [参考](http://www.w3.org/TR/html401/interact/forms.html#adef-tabindex){Nepsがエラーを指摘した後に修正} – Dancrumb

+3

@Dancrumb、はい、HTML5にあります – Neps

+0

ありがとうございます訂正 – Dancrumb

4

興味のある方は、受け入れられた回答に加えて、次の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

1

は、それぞれにtabindex="0"属性を追加し、あなたがtabbableたいDIV。例えば、hoverと:focusというCSS擬似クラスを使用します。例えば、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>

関連する問題