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

如何用CSS在.room-code获焦时同时修改自身与.new-task的宽度?

解决方案

要实现.room-code获取焦点时同步修改.new-task宽度的效果,核心是匹配两个div的HTML结构选择对应CSS规则,你之前的写法失效大概率是因为结构和选择器规则不兼容,以下分两种场景给出可行方案:


场景1:.new-task 在 .room-code 之前(同级)

如果你的HTML结构是类似这样:

<div class="new-task"></div>
<div class="room-code"></div>

CSS没有原生前向选择器,可借助父容器的:focus-within状态实现:

  1. 给两个div添加共同父容器:
<div class="task-container">
  <div class="new-task"></div>
  <div class="room-code"></div>
</div>
  1. 新增CSS规则:
.task-container:focus-within .new-task {
  width: 90px;
  transition: width 0.5s;
}

原理:当容器内的.room-code获得焦点时,父容器会触发:focus-within状态,此时即可选中容器内的.new-task。


场景2:.room-code 在 .new-task 之前(同级)

如果HTML结构是:

<div class="room-code"></div>
<div class="new-task"></div>

直接用**通用兄弟选择器~**即可(若两元素相邻,用+也可行):

.room-code:focus ~ .new-task {
  width: 90px;
  transition: width 0.5s;
}

你原代码中此写法失效,大概率是因为.new-task不在.room-code的同级后方,或两元素层级不同。


关键注意事项

  • 确保两个div处于同一父元素下的同级层级,否则兄弟选择器和父容器:focus-within都无法生效;
  • 若.room-code是普通div(非表单元素),需添加tabindex="0"让它能获取焦点:
.room-code {
  /* 原有样式 */
  tabindex: 0;
  outline: none; /* 可选,移除默认焦点边框 */
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:35:25