【问题标题】:material ui border color overwriting the texbox材质ui边框颜色覆盖文本框
【发布时间】:2019-04-22 08:07:52
【问题描述】:
  • 当我最初加载页面时,文本框的边框颜色应为红色。
  • 但问题是它显示为灰色。
  • 所以我给所有的类赋予了边框颜色:红色。
  • 但它仍然没有改变。
  • 不确定如何定位此标签。

  • 我通过给予重要来实现。有没有可能在不重要的情况下实现?

  • 你们能不能让我知道,以便将来我自己修复它。

  • 在下面提供我的代码 sn-p 和沙箱。

https://codesandbox.io/s/m58841kkwp

 cssLabel: {
    "&$cssFocused": {
      color: { borderColor: "red" }
    }
  },
  cssFocused: { borderColor: "red" },
  cssUnderline: {
    "&:after": {
      borderBottomColor: "red"
    }
  },
  cssOutlinedInput: {
    "&$cssFocused $notchedOutline": {
      borderColor: "green"
    }
  },
  notchedOutline: { borderColor: "red !important" },



   <div className={classes.container}>
      <TextField
        className={classes.margin}
        InputLabelProps={{
          classes: {
            root: classes.cssLabel,
            focused: classes.cssFocused
          }
        }}
        InputProps={{
          classes: {
            root: classes.cssOutlinedInput,
            focused: classes.cssFocused,
            notchedOutline: classes.notchedOutline
          }
        }}
        label="Custom CSS border"
        variant="outlined"
        id="custom-css-outlined-input"
      />
    </div>

【问题讨论】:

  • 通常你可以避免使用 !important 通过使 css 规则具有更高的特异性,但由于你使用样式组件而不是 css 文件中的规则,我认为这是不可能的。

标签: javascript html css reactjs material-ui


【解决方案1】:

问题是您的CustomizedInputs-notchedOutline 类被MuiOutlinedInput-notchedOutline 类覆盖,输出css 是这样的:

.CustomizedInputs-notchedOutline-1356 {
    border-color: red;  //this is your class
}

.MuiOutlinedInput-root-1382 .MuiOutlinedInput-notchedOutline-1389 {
    border-color: rgba(0, 0, 0, 0.23);   //this is the class that is overwriting yours
}

你必须为元素使用或创建一个更强大的选择器,如下所示:

.more.class {    //multiple class selector
    border-color: red; 
}

注意:如果您有权访问覆盖您的类,只需更改它。

编辑: 正如我告诉你的,你可以使用更强大的选择器,将 &amp; $notchedOutlineselector 添加到 cssOutlinedInput 中,如下所示:

cssOutlinedInput: {
    "& $notchedOutline": {   //add this nested selector
       borderColor: "red",
    },

    "&$cssFocused $notchedOutline": {
       borderColor: "green"
    }
}

当然还有从notchedOutline: { borderColor: "red !important" }, 中删除!important

【讨论】:

  • 嘿,我在 CustomizedInputs-notchedOutline-1356 类之外看到了不同的数字,我们不能使用这些数字,因为每次数字可能会改变......无论如何我们可以修复它
  • @injiinji 该数字与反应的上下文有关,因此您不能使用它。我的建议是向 CustomizedInputs-notchedOutline 元素添加另一个类,这样您将有 2 个类来引用该元素,因此这将是一个更强大的选择器并将覆盖 MuiOutlinedInput-notchedOutline
  • 感谢您的回复...您能否在我的沙盒中更新如此混乱:( codesandbox.io/s/m58841kkwp
  • @injiinji 即引用组件本身,当您想在原始 css 中嵌套选择器时就像 .parent .child {} 所以在这种情况下引用 child 里面的 parent 就像&amp; $child,如果它有效,如果你支持并检查我的答案,我将不胜感激。很高兴为您提供帮助。
  • @injiinji 关于选择器试试这个cssinjs.org/?v=v9.8.7cssinjs.org/react-jss/?v=v8.6.1
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2019-11-19
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多