私はreactとreact-modalを使用してウェブサイト上にオーバーレイを作成します。このオーバーレイには、さまざまな要素とフォーム(以下の概要)が含まれています。私はTabキーを使用してフォームを通してユーザーを誘導できるようにしたい。私はtabindex=0
を必要な要素に割り当て、出現順にタブブルにする。TabindexがChromeで動作しない(Reactアプリ)
私の問題は、Firefoxで動作している間はChrome(バージョン61.0.3163.100)では動作しません。私は、DOMツリー上の要素が見えないか、高さ/幅が0である場合にこれが起こることを読んでいます。これを修正するためにいくつかのスタイルを変更しましたが、効果はありません。
<div class="ReactModalPortal">
<div data-reactroot="" class="ReactModal__Overlay" style="position: fixed; top: 0px; left: 0px; right: 0px; bottom: 0px;">
<div class="ReactModal__Content" tabindex="-1" aria-label="Questionnaire" style="position: absolute; top: 0px; left: 0px; right: 0px; height: 100%; background: transparent none repeat scroll 0% 0%; overflow: auto;">
<!-- Some other stuff and nested elements -->
<div id="...">
<form>
<input tabindex="0">
<button tabindex="0">
</form>
</div>
</div>
</div>
あなたは親要素の1つはtabindex="-1"
を持って見ることができるように。 Chromeのinspect関数やJSを使用してプログラムで変更すると、問題は解決されません(要素が最初にこのインデックスでレンダリングされた場合の違いです)。
更新
私は何か他のものが問題を引き起こしていたことに気づきました。私は内側のCSSを外部のすべてから守るために、私のモーダルのルートノードにCSS属性initial: all
を使用していました。何らかの理由でこれがtabindexの動作を妨げていました。あなたが私の理解を助けることができれば、私はこの賞金に報酬を与えます。私の回避策はちょうどall: initial
を使用していません(それはIEと互換性がありませんが、私が気づいている本当の良い代替手段もありません)。
入力、ボタンなどの要素は、デフォルトでフォーカス可能です。 'tabindex'を提供する必要はありません –
ヒントありがとうございます。私はこれが必須ではないことを認識していますが、私の問題は機能していないということです。一般的に何かを通るタブインは機能しません。 tabindexは強制する試みでしたが、それは助けになりませんでした。 – Gegenwind
Chrome 62を使用していて、私のために働いています。https://codesandbox.io/s/qzoz5mqxx9 –