当前位置: 首页 > 知识库问答 >
问题:

在已设置样式的组件中子组件的输入焦点上设置父组件的样式

凌俊语
2023-03-14

我已经看到了一些解决这个问题的繁重解决方案,在React中使用ref或事件处理程序。我想知道样式化组件中是否有解决方案。

下面的代码显然不正确。当输入子组件具有焦点时,我正在尝试找出设置父组件样式的最简单方法。这是否可以使用样式化组件?

实现这一点的最佳方法是什么,特别是考虑到样式化组件,即使这意味着依赖上面提到的React方法之一?

const Parent = () => (
  <ParentDiv>
    <Input/>
  </ParentDiv>
);


const ParentDiv = styled.div`
  background: '#FFFFFF';

  ${Input}:focus & {
    background: '#444444';
  }
`;

const Input = styled.input`
  color: #2760BC;

  &:focus{
    color: '#000000';
  }
`;

共有3个答案

陆阳曜
2023-03-14

@hoodsy谢谢,它就像我在父div上使用的一个符咒,当输入聚焦时,它可以改变标签的颜色。

     &:focus-within label{
      color: blue;
  }
夏理
2023-03-14

//更新2018:

如果您不需要Edge或IE支持,您可以使用:focus in(感谢您了解@hoodsy)

div:focus-within {
  background: #444;
}
<div>
  <input type="text" />
</div>
祁默
2023-03-14

签出:在内聚焦!我想这正是你想要的。

https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-内

 类似资料:
  • 问题内容: 我有一个父组件: 我想用子组件填充该组: 父模板: 子模板: 由于和是两个独立的组件,因此它们的样式被锁定在自己的范围内。 在父组件中,我尝试执行以下操作: 但是样式没有被应用到组件。 我尝试使用将的样式表包含到组件中来解决范围问题: 但这无济于事,还尝试了另一种方法,即将样式表提取到其中,但这也无济于事。 那么,如何设置父组件中包含的子组件的样式? 问题答案: 更新-最新方式 如果可

  • 当组件挂载时,我试图专注于输入。输入组件是一个样式化的组件,因此我使用innerRef来获取对元素的引用。然而,当组件挂载时,输入不会得到焦点。我已经检查了该节点是否实际获得了对DOM节点的引用。我找不到我的逻辑有任何问题。谢谢你的帮助。

  • 我在React web上使用样式化组件已经有一段时间了,但最近我开始开发一个React Native应用程序,我决定在中使用样式化的组件。当设计只有属性的组件时,比如默认的components,这是非常好的。 但是,我遇到的问题是,当我需要为具有多个样式属性的更复杂的组件设置样式时,例如、等。 当只有一个样式属性具有不同的名称时,我可以执行以下操作: 这完美无缺,但是当组件具有多种样式时,我不知道

  • 我应该让我的组件“受控”吗?什么是“最佳实践”?

  • 我试图设置专注于“下拉”组件,但焦点不是“下拉”组件。 我使用了中给出的自动对焦属性https://www.primefaces.org/primereact/#/dropdown.然后我尝试使用react ref设置焦点。 https://codesandbox.io/s/dropdownautofocus-jko5d

  • 当将html输入与样式化组件一起使用并将值保存为react state with onChange时,组件似乎会在每次状态更改时重新呈现,并导致输入失去焦点。有没有办法防止输入失去焦点?为什么会发生这种情况?这里有一个例子。