css 在样式化组件中嵌套组件

jvidinwx  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(229)

我做了这些部件:

<UserImg imgUrl={userPhoto}>
  <DropDown>
    <div onClick={handleAuth}>Sign Out</div>
  </DropDown>
</UserImg>

const DropDown = styled.div`
  letter-spacing: 0.2em;
  position: relative;
  top: 7vh;
  left: 23vw;
  border-radius: 2px;
  text-transform: uppercase;
  transition: all 0.5s ease-in;
  border: 2px solid red;
  div {
    padding: 0.3em;
  }
`;

const UserImg = styled.a`
  background-image: url(${(props) => props.imgUrl});
  background-repeat: no-repeat;
  background-size: contain;
  background-position: 30%;
  display: inline-block;
  cursor: pointer;
  position: relative;
  height: 12vh;
  width: 5vw;
  left: 25vw;
  border: 2px solid white;
  border-radius: 50%;
  &:hover {
    ${DropDown} {
      visibility: visible;
      border: 1px solid white;
      border: transparent;
      cursor: pointer;
    }
  }
`;

UserImg组件工作正常,但DropDown组件未显示。
我希望显示DropDown组件。

yshpjwxd

yshpjwxd1#

您的<DropDown>组件 * 已 * 显示,但可能不在您预期的位置:它位于<UserImg>右侧的23vw,因为这是您按照其风格指定的left: 23vw;位置:

如果您希望它是2vw的左边,您将使用left: -2vw;的例子。
因为<DropDown><UserImg>的子容器,所以它的位置相对于父容器。
演示:https://codesandbox.io/s/naughty-lewin-9zi6ws?file=/src/App.js

相关问题