html - 可通过键盘导航的纯文本 HTML 单选按钮?

标签 html css radio-button accessibility

此线程 ( Text only radio buttons ) 提供了一种制作仅显示文本的单选按钮的方法,周围有一个边框,当选择该按钮时,该边框会改变颜色。

问题是键盘导航在此设置中不起作用。这并不奇怪;它隐藏了单选按钮并仅显示标签。

有没有办法让纯文本单选按钮与键盘导航一起使用?

谢谢。

最佳答案

我能想到的没有 JavaScript 的唯一解决方案是在不使用 display: none 的情况下使按钮不可见,因为它不会呈现按钮,因此您无法导航它。

这可以通过不透明度来完成。这将使其不可见,但它仍会留在原处。为了使其不干扰其他元素,可以将其设置为position:absolute。所有烦恼都消失了。

enter image description here

参见:

label {
  display: inline-block;
  width: 100px;
  height: 50px;
  border: solid 2px red;
}

input[type="radio"] {
 opacity: 0;
 position: absolute;
}

input[type="radio"]:checked + label {
  border: solid 2px green;
}
<input type="radio" id="test" name="jeff">
<label for="test">Pizza</label>
<input type="radio" id="test2" name="jeff">
<label for="test2">Steak</label>

CBroe 提到的补充是使用.visuallyhidden类而不仅仅是使用不透明度。兼容性可能会更好。

input[type="radio"] {
  position: absolute; 
  overflow: hidden; 
  clip: rect(0 0 0 0); 
  height: 1px; width: 1px; 
  margin: -1px; padding: 0; border: 0;
}

关于html - 可通过键盘导航的纯文本 HTML 单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48892473/

相关文章:

html - CSS Hover 以不同方式控制多个元素

java - 有没有一种方法可以根据单选按钮单击通过代码传递文本值?

android - RadioButton Get(java.lang.IllegalStateException:selectedRadioButton不能为null)

html - css:内容超出范围

javascript - 动态创建和删除一个 div

css - 部分div透明?

javascript - 如何取消选择单选按钮并在单击时重新选择默认按钮?

javascript - 在同一页面通过 Javascript 函数加载 Applet

css - 用于文本阴影的 Mozilla CSS hack

javascript - 我的 JavaScript 测验结果没有样式,为什么?