按钮不可访问且未专注于 Tab 键

Posted

技术标签:

【中文标题】按钮不可访问且未专注于 Tab 键【英文标题】:Button is not accessible and not focused on tab key 【发布时间】:2021-05-25 06:57:40 【问题描述】:

我有以下代码在多选下拉菜单中显示按钮。我为每个

使用了 tabindex="0"

标签。还在css中添加了焦点。 html 代码:

<div class="form-group-multi__MultiControls">
<p tabindex="0" class="btn-tertiary--light">Cancel</p>
<p tabindex="0" class="btn-clear-all">Clear all</p>
<p tabindex="0" class="btn-secondary">Apply</p>
</div>

CSS 代码:

.btn-clear-all:focus 
  outline: -webkit-focus-ring-color auto 1px;
  outline: 1px solid black;
  

我的问题是 Tab 键上的“取消”按钮是可访问的,但不是其他两个 - 全部清除并应用。

如果我遗漏了什么,请提出建议。

【问题讨论】:

如果我运行您的代码 sn-p,我可以专注于所有链接 很确定查看您的 CSS “清除所有”是您会看到自定义焦点指示器的地方,而不是“取消”。除了您应该使用&lt;button&gt; 元素 来实现可访问性之外,因此您不必担心tabindex="0",您需要将您的CSS 选择器更改为.btn-tertiary--light:focus, .btn-clear-all:focus, .btn-secondary:focus。此外,如果这是引导程序(它看起来是),那么您应该将 .btn 类也添加到每个按钮,这样您就可以简单地将其作为目标,而不是在您的 CSS class="btn btn-tertiary--light" 等允许您只做 .btn 【参考方案1】:

您遗漏了一件非常明显的事情(我的意思是,对于语义和可访问性)。 查看您的按钮并注意您所看到的。你看到按钮了吗?

正确答案:不。你看到段落&lt;p&gt;s,不是&lt;button&gt;s)。

有两种解决方案,一种最好,一种不太好:

    最佳解决方案。将您的所有&lt;p&gt;s 更改为&lt;button&gt;s。您已经为它们应用了 Bootstrap 的 btn-secondary 类,所以我非常有信心您的样式不会受到任何影响。 将role="button" 添加到您的&lt;p&gt;s。同样,正如 ARIA 的第一条规则所说,如果您绝对没有使用 ARIA,则不得使用,这不是一个很好的解决方案。

【讨论】:

以上是关于按钮不可访问且未专注于 Tab 键的主要内容,如果未能解决你的问题,请参考以下文章

专注于 iPhone 上的下一个有效键视图

盘古开源专注于芯片产品研发,未来发展不可估量

单击按钮后如何激活专注于输入的iOS键盘?

Emberjs - 使用专注于自身的 Views/Handlebar Helpers 创建一个按钮

专注于一个窗口形式的多个列表视图

有没有办法专注于 DataGrid 的单元格而不将其设置为可编辑?