当他的孩子被键盘导航集中注意力时,如何显示元素?



更新,因为我仍然不知道该怎么做,我很高兴知道它。只是提醒一下,这是关于可访问性和仅使用键盘(没有鼠标)的,到目前为止人们似乎还不了解的事情,即使 IMO 这很有趣,也使这个问题陷入深渊。

我尝试提高网站的可访问性,但只有在自身或上一个元素聚焦/悬停时才显示div 的问题。

这个div有一个输入,我希望它可以通过键盘导航访问,但是当焦点放在输入上时, 它不认为div 是这样。

所以我问我如何检测焦点何时在此输入上并保持父div 显示?

我已经尝试过使用 css,但我们不能选择父级(除了 :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-inside,但它并没有在所有浏览器上实现。

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

最新更新