浏览器中预定义了多少种单选按钮状态?

How many states of radio button are predefined in browser?

我面临着开发自定义单选按钮的任务。为了避免样式问题,我想知道所有可能的预定义状态(例如选中、活动和其他),以便为它们制定 CSS 规则以确保我不会有一些意外的样式。

这些状态及其组合是什么?

在 W3C Selectors Level 3 document 中有以下状态 pseudo-classes 可以应用于无线电元素:

  • :选中
  • :启用
  • :禁用

记住无线电元素可以不被选中,有必要提到有未选中状态。这些状态成对出现,每对中的一个状态始终存在。这样我们现在得到 4 种可能的状态(它们可以在下面的思维导图中找到)。

确实存在可应用于 html 无线电元素的动态 pseudo-classes:

  • :悬停
  • :活跃
  • :焦点

它们可以任意组合使用,也可以完全不使用。它们有 8 种可能的组合。将其与 4 个 enabled-disabled、checked-unchecked 对组合,我们得到 32 个可能的陈述,可以在以下思维导图中找到(缩放以查看全尺寸): 从checked-unchecked节点开始算起,每一次包含至少两个节点的pass就是一个状态,例如:

  • checked-disabled,
  • checked-enabled-focus,
  • unchecked-enabled-hover-active.

在每个启用的路径附近,都有一张单选按钮状态的图片,因为它现在在 MacOS Sierra 上的 Chrome 浏览器中实现。每个禁用路径只有一张图片——它们对于其他禁用状态都是相同的。总共有 10 张图片代表每个州。使用数字是为了方便。