当输入被隐藏时,W3C 是否标准化了焦点的移动?

Does W3C standardize the movement of focus when input gets hidden?

我们来看一个代码示例。 Live version。 HTML:

<input type="text" class="a" />
<input type="text" class="b" />

CSS:

input:focus {
  background: red;
  display: none;
}

在这里,输入在获得焦点后立即失去焦点,因为它被隐藏了。焦点应该转到下一个输入。我认为它应该振荡聚焦任一输入,就像粗体文本在悬停时变得正常一样。

但是当我们打开 Chrome 中的示例并将焦点设置到任一字段时,它们都会失去焦点。 Firefox 做了更有趣的事情:两个字段都失去了焦点,但一个仍然隐藏。

我查看了 W3C standard,但似乎没有任何内容是对有效行为的描述。

什么是正确的行为,它是否有定义?

是的,但它在 HTML5 规范中而不是 CSS 规范中。

这被称为 焦点修复,描述它的规范在这里:http://www.w3.org/html/wg/drafts/html/master/editing.html#focus-fixup-rule-one

简而言之,上面说的是重点转移到"the first non-inert focused area in [the same] control group",但是完整的规则太长了,无法在这里转载。