如何使用react js在选择字段中将颜色边框底部蓝线更改为绿绿线?

IT技术 reactjs react-redux material-design material-ui
2021-04-30 10:20:23

我正在使用材料 UI react中的选择字段

当我从字段中选择任何项目时,我面临两个问题:

  1. 边框底线变为蓝色,背景颜色变为灰色。我需要将边框底线更改为绿色,将背景颜色更改为白色。

这是我的代码 https://codesandbox.io/s/zqok7r3x63

<FormControl className={classes.formControl}>
          <InputLabel
            required
            htmlFor="age-native-simple"
            FormLabelClasses={{
              asterisk: classes.labelAsterisk,
              root: classes.labelRoot,
              focused: classes.focusedLabel
            }}
          >
            Role
          </InputLabel>
          <Select
            className=""
            native
            classes={{}}
            value={this.state.age}
            onChange={this.handleChange("age")}
            inputProps={{
              name: "age",
              id: "age-native-simple",
              classes: {
                root: classes.inputRoot,
                focused: classes.inputFocused,
                underline: classes.underlineInput
              }
            }}
          >
            <option value="" disabled />
            <option value={10}>Ten</option>
            <option value={20}>Twenty</option>
            <option value={30}>Thirty</option>
          </Select>
        </FormControl>

C

2个回答

使用原生 Select 时,有两个主要元素在起作用: anInput和 native <select>Input是您需要更改下划线的内容,但对于本机 Select 将inputProps传递给本机select而不是Input. Input在这种情况下,您可以通过input属性自定义,然后将其与underline一起提供您在聚焦时尝试更改的背景颜色用于 ,select以便可以直接在classes属性中传递

以下是 Select 的样式和代码以及您的沙箱的更新版本。在我的示例中,我为不同状态的下划线使用了三种不同的颜色,因此您可以轻松看到效果,但您可以将所有/任何这些颜色更改为您喜欢的绿色阴影。

const styles = {
  focused: {},
  disabled: {},
  error: {},
  select: {
    "&:focus": {
      backgroundColor: "white"
    }
  },
  underlineInput: {
    "&:before": {
      // normal
      borderBottom: "1px solid #00ff00"
    },
    "&:after": {
      // focused
      borderBottom: `2px solid #ff0000`
    },
    "&:hover:not($disabled):not($focused):not($error):before": {
      // hover
      borderBottom: `2px solid #0000ff`
    }
  }
};
          <Select
            native
            classes={{ select: classes.select }}
            value={this.state.age}
            onChange={this.handleChange("age")}
            input={
              <Input
                classes={{
                  root: classes.inputRoot,
                  focused: classes.focused,
                  disabled: classes.disabled,
                  error: classes.error,
                  underline: classes.underlineInput
                }}
              />
            }
            inputProps={{
              name: "age",
              id: "age-native-simple"
            }}
          >
            <option value="" disabled />
            <option value={10}>Ten</option>
            <option value={20}>Twenty</option>
            <option value={30}>Thirty</option>
          </Select>

编辑本机选择自定义下划线

首先,“选择”材料 UI 组件仅接受根、选择、填充、轮廓、选择菜单、禁用和图标,如文档中所述,其类属性上没有“聚焦”和“下划线”。

其次,您可以按照您想要的方式编写自定义 CSS 并将其注入适当的类,例如,将焦点选择背景设为白色:

改变课程

classes: {
            root: classes.inputRoot,
            select: classes.inputFocused
          }

改变CSS

  inputFocused: {
    "&:focus": {
    backgroundColor: "white"}
  },

希望能帮助到你