我使用 react 和 react-modal 在网站上创建覆盖。此叠加层包含各种元素以及一个表单(下面的概述)。我希望能够使用 TAB 键引导用户完成表单。我分配tabindex=0
给所需的元素以按出现顺序可选项卡。
我的问题是:它在 Chrome(版本 61.0.3163.100)中不起作用,而在 Firefox 中起作用。我读到,如果 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>
如您所见,其中一个父元素具有tabindex="-1"
. 当通过 Chrome 中的检查功能或使用 JS 以编程方式更改它时,问题仍然存在(或者如果元素最初使用此索引呈现,是否存在差异?)。
更新
我意识到是其他原因导致了这些问题。initial: all
我在模态框的根节点上使用 CSS 属性将我的内部 CSS 与外部的所有内容隔离开来。由于某种原因,这阻止了 tabindex 的工作。如果你能帮助我理解,我会奖励这个赏金。我的解决方法就是不使用all: initial
(无论如何它不兼容 IE,但我知道也没有真正好的替代方案)。