【问题标题】:How do I override styles using dollar sign ($) in MUI 5?如何在 MUI 5 中使用美元符号 ($) 覆盖样式?
【发布时间】:2021-12-05 02:24:53
【问题描述】:

下面的代码来自 MUI 5,带有 MUI 4 解决方案,用于在悬停时更改输入字段。但这显然不起作用,想知道如何在MUI 5中实现这一点,不能 似乎在悬停时从TextField 改变颜色。这是在 MUI 5 中使用 createTheme 完成的

components: {
  MuiInputLabel: {
    styleOverrides: {
      root: {
        color: arcBlue,
        fontSize: '1rem',
      },
    },
  },
  MuiInput: {
    styleOverrides: {
      underline: {
        '&:before': {
          borderBottom: `2px solid ${arcBlue}`,
        },
        // Code from material ui 4
        '&:hover:not($disabled):not($focused):not($error):before': {
          borderBottom: `2px solid ${arcGrey}`,
        },
      },
    },
  },
},

【问题讨论】:

    标签: reactjs material-ui jss


    【解决方案1】:

    $ 语法是 JSS 的一项功能,在 MUI v5 中,它们切换到情感,因此不再起作用,您现在有 2 个选项:

    使用纯字符串

    this 部分,您可以看到描述不同 MUI 组件状态的类名列表:

    State Global class name
    active .Mui-active
    checked .Mui-checked
    completed .Mui-completed
    disabled .Mui-disabled
    error .Mui-error
    expanded .Mui-expanded
    focus visible .Mui-focusVisible
    focused .Mui-focused
    required .Mui-required
    selected .Mui-selected
    '&&:hover:not(.Mui-disabled):not(.Mui-error):before': {
      borderBottom: `5px solid purple`
    }
    

    使用常量

    如果您不想硬编码类名,大多数 MUI 组件都有自己的类常量:

    import { [component]Classes } from "@mui/material/[Component]";
    import { inputClasses } from "@mui/material/Input";
    
    [`&&:hover:not(${inputClasses.disabled}):not(${inputClasses.focused}):before`]: {
      borderBottom: `5px solid purple`
    }
    

    参考

    【讨论】:

    • 非常感谢。我很感激。成功了
    • @DiegoFranco,还请注意,您需要将 & 符号 && 加倍以增加特定情况下的 CSS 特异性,否则它会被 MUI 样式覆盖。
    • 谢谢伙计。欣赏它。
    猜你喜欢
    • 2021-12-07
    • 2022-10-23
    • 2021-01-01
    • 2022-01-13
    • 2019-10-02
    • 1970-01-01
    • 2022-10-13
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多