我希望当子元素输入中有焦点时更改父元素的样式.

我知道最初的css不起作用.我可以使用状态,因为它是react ,但我想知道是否有更简单的方法.

<div className="container">
  <div className="input__container">
    <input type="text">
    </input>
  </div>
</div>
input:focus .container {
  border: 1px solid blue;
}

推荐答案

使用:focus-within伪类(:has伪类-这里不需要更少的浏览器支持)

MDN人起:

:Focus-Inside css伪类匹配元素,如果元素 或者它的任何后代都专注于.

还有,browser support元已经很不错了

.container {
  border: 5px solid gold;
  display: inline-block;
}

.container:focus-within {
  border: 5px solid green;
}
<div class="container">
  <div class="input__container">
    <input type="text">
    </input>
  </div>
</div>

Css相关问答推荐

如何将此 Select 器转换为TailWind类

如何在点击时停止动画并将其返回到第一帧?

将CSS栅格行高设置为其余视口高度

覆盖现有像素的混合

如何有条件地设置元素的字体大小,只有在未明确设置父字体大小(即字体大小为继承)的情况下?

背景图像允许溢出输入按钮

Tailwind CSS: Select 单选按钮时不应用同行判断的边框

在 React Native 中创建背景

如何给三角形添加渐变?

Bootstrap 类似乎没有任何作用

基于内容显示(show)/隐藏(hide)同级div

CSS:固定到底部并居中

在 Firefox 中删除额外的按钮间距/填充

如何对齐标签和文本区域?

在移动网络上禁用捏zoom

bootstrap.css 和 bootstrap-theme.css 有什么区别?

我可以在 css 中指定 maxlength 吗?

:before 和 ::before 有什么区别?

CSS中伪元素前的&是什么意思?

仅使用 css 的换行符(如
)