reactjs 物料中Select输入标签的定制

dluptydi  于 12个月前  发布在  React
关注(0)|答案(1)|浏览(81)

我正在使用“styled”方法定制一个select:

const StyledSelect = styled(Select)`
  height: 2rem;
  color: #fff;
  border-color: #fff;

  & .${selectClasses.icon} {
    color: #fff;
  }

  & .${outlinedInputClasses.notchedOutline} {
    border-color: #fff;
  }
  &:hover .${outlinedInputClasses.notchedOutline} {
    border-color: #fff;
  }

  &.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline} 
  {
    border-color: #fff !important;
  }
`;

...

<FormControl fullWidth>
     <InputLabel id="primary-ticker-selector">Ticker</InputLabel>
     <StyledSelect
            labelId="primary-ticker-selector"
            id="primary-ticker-selector"
            value={primary_ticker}
            label="Ticker"
            onChange={handlePrimaryTickerChange}
          >
            {tickers_list.map((ticker, index) => {
                return <MenuItem value={index}>{ticker}</MenuItem>
             })} 
      </StyledSelect>
 </FormControl>

字符串
但是,当我这样做的时候,我得到了两个问题:
1.当标签收缩时,它会变回原色,而不是保持白色
1.标签不再垂直居中,因为我降低了Select的高度。
我尝试只用styled方法来解决这些问题,我不想导入@material/styles。我找不到任何关于如何做到这一点的参考。
编辑:我找到了答案1),将写在下面,但对于2这是一个谜。

const StyledInputLabel = styled(InputLabel)`
color: #fff;
&.${inputLabelClasses.shrink} {
    color: #fff;
}
`;

ljsrvy3e

ljsrvy3e1#

标签组件有一个transform属性,它可以垂直放置文本。你必须用一些CSS属性覆盖它。试试这个:

<InputLabel
  id="primary-ticker-selector"
  style={{
    height: "2rem",
    display: "flex",
    alignItems: "center",
    transform: "unset",
    paddingLeft: "6px",
  }}
>
  Ticker
</InputLabel>

字符串
您可以根据自己的需求进行调整。

相关问题