:focus-within

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。从 $200 的免费积分 开始!

CSS 中的 :focus-within 伪类选择器有点不寻常,尽管名称合理且相当直观。如果元素包含任何具有 :focus 的子元素,它将选择该元素。

form:focus-within {
  background: lightyellow;
}

其工作原理如下……

<!-- this form will be selected -->
<form action="#">

  <!-- when this input is in focus -->
  <input type="text">

</form>

我说“不寻常”,因为在 CSS 中,根据子元素的存在或状态来选择父元素并不常见。尽管如此,它仍然非常有用!

这是一个可尝试的表单示例

请注意,该示例在整个表单上以及内部输入包装的 <div> 上使用 :focus-within

子元素以任何方式获得焦点都会触发 :focus-within。例如,如果元素具有 tab-indexcontenteditable 属性,那么它就是一个可聚焦元素,并且会起作用。它也不关心元素如何获得焦点。它可以被点击或轻触,也可以通过选项卡或其他方式导航到,甚至可以通过 JavaScript 获得焦点,例如…

document.querySelector("input").focus();

浏览器支持

此浏览器支持数据来自 Caniuse,其中包含更多详细信息。数字表示浏览器从该版本起支持该功能。

台式机

ChromeFirefoxIEEdgeSafari
6052不支持7910.1

移动设备/平板电脑

Android ChromeAndroid FirefoxAndroidiOS Safari
12712712710.3