当输入被隐藏时,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",但是完整的规则太长了,无法在这里转载。
我们来看一个代码示例。 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",但是完整的规则太长了,无法在这里转载。