Flexbox 样式在 React 样式组件中不起作用

Flexbox styles not working in React Styled Component

我一直在努力使用 StyledComponents 为我的 React 应用程序设置样式,但是我已经成功地重新创建并修复了此代码笔中的问题:

https://codepen.io/simoncunningham/pen/mdwMgyL

(基本上使用 flex: 1)来确保复选框扩展到父级的整个宽度)但是我不能用我的 StyledComponents 反映这个变化,任何人都可以看到我可能遗漏了什么吗?

const StyledWrapper = styled.div`
  position: relative;
  display: inline-flex;
  min-height: 1.5rem;
  margin-right: 1rem;
  padding: 0.5rem
  width: 200px;
`;

const StyledHiddenInput = styled.input`
  position: absolute;
  z-index: -1;
  visibility: hidden;

  &[type="checkbox"]:checked ~ label::after {
    background-image: url("${checkboxImage}");
    width: 20px;
    height: 20px;
  }
`;

const StyledLabel = styled.label`
  position: relative;
  margin-bottom: 0;
  display: flex;
  margin-left: 0;
  margin-right: 24px;
  flex-direction: row-reverse;
  justify-content: space-between;
  flex: 1;

  &::before {
    display: block;
    top: 4px;
    width: 20px;
    height: 20px;
    content: "";
    background-color: #fff;
    border: 1px solid black;
    border-radius: 4px;
  }

  &::after {
    position: absolute;
    display: block;
    top: 4px;
    height: 20px;
    content: "";
    background-repeat: no-repeat;
    background-position: center center;
    background-size: 80%;
  }
`;

const StyledLabelWrapper = styled.div`
  margin-left: 24px;
  margin-right: 0;
`;
<StyledWrapper>
   <StyledHiddenInput />
   <StyledLabel>
      <StyledLabelWrapper>{label}</StyledLabelWrapper>
   </StyledLabel>
</StyledWrapper>

Codepen 的输出屏幕截图(按预期工作,复选框显示在尽可能靠右的位置)::

样式化组件的输出屏幕截图:

试试这个(最后添加的 2 个属性):

.label::before {
  display: block;
  width: 20px;
  height: 20px;
  content: "";
  background-color: #fff;
  border: 1px solid black;
  border-radius: 4px;
  position: relative;
  right: 0;
}

通过像这样更新 StyledWrapper 上的 width 解决了问题:

const StyledWrapper = styled.div`
  display: inline-flex;
  min-height: 1.5rem;
  padding: 0.5rem
  width: 100%;
`;

允许内容增长到其容器的整个宽度。