javascript 如何显示一个元素时,他的孩子是由键盘导航焦点?

pes8fvy9  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(93)
    • 更新**因为我仍然不知道如何做到这一点,我很高兴知道它。只是提醒这是关于可访问性和使用键盘只(没有鼠标),人们似乎不明白的事情,到目前为止,使这个问题陷入深渊,即使我觉得这是有趣的。

我试图提高我的网站的可访问性,我有一个问题,一个div显示只有当它自己或前一个元素被聚焦/悬停。
这个div中有一个输入,我希望它可以通过键盘导航访问,但是当焦点放在输入上时,它不认为div是这样的。
所以我想知道如何检测焦点何时移到这个输入上,并保持父div显示?
我已经尝试过css,但是我们不能选择parent(除了:had,但是还没有实现)。
我也搜索过使用JavaScript和jQuery的解决方案,但我不知道如何实现。

.b {
  display: none;
}

.a:hover+.b,
.a:focus+.b,
.b:hover,
.b:focus {
  display: block;
}
<button class="a">A button that displays the div</button>
<div class="b">
  <input type="checkbox">
</div>

实际上,当你聚焦按钮时,div会出现,但是当你使用制表输入时,div会消失。我希望它在输入聚焦时保持显示。
它的工作,如果你点击按钮,问题只发生在你不使用鼠标。
我发现:focus-within,但它不是在所有浏览器上实现。

ie3xauqp

ie3xauqp1#

所以你的问题是,当你点击复选框,即当复选框被选中,那么它应该是display: block,直到它被选中。当你再次取消选中它,它应该像以前一样工作,即按钮焦点display: block否则display: none我是正确的吗?

相关问题