改变反应选择组件的高度

Dro*_*ets 16 reactjs react-select

我正在使用 react-select 组件和 bootstrap v4

所有引导程序的东西似乎都是基于 35px 的高度,react-select组件的默认高度是 38px,这看起来有点奇怪。

任何想法如何更改组件的高度?

它使用了一些我以前从未遇到过的奇怪的 JS 样式库。我已经设法让它模仿使用它的焦点轮廓,但高度让我望而却步,任何帮助都非常感谢

你可以在这里

Jiv*_*van 41

花了几个小时,我最终得到了精确的 30px 高度的 react select with border 1px:

  const customStyles = {
    control: (provided, state) => ({
      ...provided,
      background: '#fff',
      borderColor: '#9e9e9e',
      minHeight: '30px',
      height: '30px',
      boxShadow: state.isFocused ? null : null,
    }),

    valueContainer: (provided, state) => ({
      ...provided,
      height: '30px',
      padding: '0 6px'
    }),

    input: (provided, state) => ({
      ...provided,
      margin: '0px',
    }),
    indicatorSeparator: state => ({
      display: 'none',
    }),
    indicatorsContainer: (provided, state) => ({
      ...provided,
      height: '30px',
    }),
  };
Run Code Online (Sandbox Code Playgroud)

  • 提供的是“react-select”提供的样式,如果您不传播它们,您将无法获得其他属性的默认样式。 (3认同)

Ere*_*man 22

您可以将样式添加到选择组件的任何部分,查看相关文档

这是您要求的工作演示

在您的情况下,您需要添加的代码如下所示:

const customStyles = {
  control: base => ({
    ...base,
    height: 35,
    minHeight: 35
  })
};
Run Code Online (Sandbox Code Playgroud)

并在选择组件中:

<Select
          className="basic-single"
          classNamePrefix="select"
          defaultValue={colourOptions[0]}
          isDisabled={isDisabled}
          isLoading={isLoading}
          isClearable={isClearable}
          isRtl={isRtl}
          isSearchable={isSearchable}
          name="color"
          options={colourOptions}
          styles={customStyles}
 />
Run Code Online (Sandbox Code Playgroud)

  • 但正如您所看到的,当您将控件的高度减小到小于 ~34px 时,它实际上并没有减小任何其他组件的大小。我需要,并且我想象原始海报,需要降低控件的高度,同时保持值垂直居中,“x”在右侧,等等。我想降低所有东西的高度,这样它就比矩形高 (7认同)
  • 这是如何被投票和接受的?这实际上是任何人想到尝试的第一件事,但它不起作用...... (7认同)

Bas*_*sem 12

您无法使其小于 36px 的原因是dropdownIndicatorindicatorContainer(显示清晰的图标)在所有边上占用 20px(图标)+ 8px 填充。如果你减少填充,它minHeight就会真正起作用。

dropdownIndicator: (styles) => ({
    ...styles,
    paddingTop: 7,
    paddingBottom: 7,
}),
clearIndicator: (styles) => ({
    ...styles,
    paddingTop: 7,
    paddingBottom: 7,
}),
Run Code Online (Sandbox Code Playgroud)

dropdownIndicator您可以尝试使用和的填充clearIndicator

我注意到,由于 的原因,minHeight 不能低于 30px valueContainer,除非您更改其高度/填充。


Sin*_*Yuk 10

CSS方式

您可以指定classNamePrefix并使用它来覆盖 CSS 样式。

<Select classNamePrefix="mySelect" />
Run Code Online (Sandbox Code Playgroud)
.mySelect__value-container{
 height: 35px;
}
Run Code Online (Sandbox Code Playgroud)


ruw*_*800 5

我几乎无法使用该属性使Select组件小到 32px(在我的浏览器中theme。当高度大于 45px 时效果很好。您也可以省略该baseUnit属性。

它不适用于小尺寸。

  const theme = (theme: Theme) => ({
    ...theme,
    spacing: {
      ...theme.spacing,
      controlHeight: 30,
      baseUnit: 0,
    }
  });
Run Code Online (Sandbox Code Playgroud)
  const theme = (theme: Theme) => ({
    ...theme,
    spacing: {
      ...theme.spacing,
      controlHeight: 30,
      baseUnit: 0,
    }
  });
Run Code Online (Sandbox Code Playgroud)

  • 这个答案最适合我,但我更喜欢 baseUnit 为 2: const customThemeFn = (theme) =&gt; ({ ...theme,pacing: { ...theme.spacing, controlHeight: 30, baseUnit: 2 } }) (2认同)