You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS实现父元素随子元素获焦样式变化:focus-within失效替代方案

纯CSS解决方案:让非交互子元素可聚焦以触发父元素样式变化

你遇到的问题不是focus-within只对文本输入类元素生效,而是非交互元素(比如div)默认不具备可聚焦性,所以点击它们时不会触发父元素的focus-within状态。

要实现任意子元素触发父元素样式变化的纯CSS方案,只需要给那些非交互子元素添加tabindex属性,让它们能够获得焦点即可:

修改后的代码示例

CSS

form { border: 1px solid black; }
form:focus-within { background-color: red; }
div { background-color: yellow; }
/* 可选:给聚焦的div添加样式,区分聚焦状态 */
div:focus { outline: 2px solid blue; }

HTML

<form>
  <input type="text">
  <!-- 添加tabindex让div可聚焦 -->
  <div tabindex="0">click here</div>
</form>

关于tabindex的说明

  • tabindex="0":元素会被纳入键盘tab键的遍历顺序中,和默认交互元素(如输入框)的优先级一致。
  • tabindex="-1":元素可以通过鼠标点击获得焦点,但不会被tab键遍历到,适合不需要键盘导航的场景。

这样修改后,不管是点击输入框还是div,form元素的focus-within状态都会被触发,背景色变为红色。

内容的提问来源于stack exchange,提问作者Cain Nuke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:15:51