【问题标题】:Material-UI Input component underline colorMaterial-UI Input 组件下划线颜色
【发布时间】:2018-11-16 02:05:14
【问题描述】:

我正在尝试制作一个带有白色下划线的输入组件。目前,当用户将鼠标悬停在组件上时,下划线颜色变为黑色。我希望这是白色的。我相信这应该可以通过覆盖演示中的下划线类来实现,如下所述。不幸的是,它似乎不起作用,但如果我在浏览器中手动检查样式并删除以下行,它在浏览器中会按预期工作。

示例:https://stackblitz.com/edit/yjpf5s(查看:https://yjpf5s.stackblitz.io

在浏览器中手动删除样式以获得所需的功能:

.MuiInput-underline-365:hover:not(.MuiInput-disabled-364):not(.MuiInput-focused-363):not(.MuiInput-error-366):before {
  border-bottom: 2px solid rgba(0, 0, 0, 0.87);

我正在使用的覆盖类样式:

underline: {

        color: palette.common.white,
        borderBottom: palette.common.white,
        '&:after': {
            borderBottom: `2px solid ${palette.common.white}`,          
        },              
        '&:focused::after': {
            borderBottom: `2px solid ${palette.common.white}`,
        },              
        '&:error::after': {
            borderBottom: `2px solid ${palette.common.white}`,
        },                      
        '&:before': {
            borderBottom: `1px solid ${palette.common.white}`,          
        },
        '&:hover:not($disabled):not($focused):not($error):before': {
            borderBottom: `2px solid ${palette.common.white}`,
        },
        '&$disabled:before': {
            borderBottom: `1px dotted ${palette.common.white}`,
        },              
    },

编辑: 以下是最终奏效的解决方案:

'&:hover:not($disabled):not($focused):not($error):before': {
    borderBottom: `2px solid ${palette.common.white} !important`,
},

【问题讨论】:

    标签: css material-ui jss


    【解决方案1】:

    首先,像这样添加您的输入

    <Input {...props} className='myClass' />
    

    现在在你的 CSS 中

    .gc-input-bottom::after{
        border-bottom: 2px solid $input-border-color-active!important;
        :hover{
            border-bottom: none!important;
        }
    }
    
    .gc-input-bottom::before{
        border-bottom: 1px solid $input-border-bottom-color!important;
    }
    

    before 将为您提供始终可见的下划线访问权限,而 after 将为您提供点击后下划线访问权限。现在做你想做的事

    【讨论】:

      【解决方案2】:

      受纪尧姆回答的启发,这是我的工作代码,如果您不关心错误状态,请简化:

      const WhiteTextField = withStyles({
        root: {
          '& .MuiInputBase-input': {
            color: '#fff', // Text color
          },
          '& .MuiInput-underline:before': {
            borderBottomColor: '#fff8', // Semi-transparent underline
          },
          '& .MuiInput-underline:hover:before': {
            borderBottomColor: '#fff', // Solid underline on hover
          },
          '& .MuiInput-underline:after': {
            borderBottomColor: '#fff', // Solid underline on focus
          },
        },
      })(TextField);
      

      用途:

      <WhiteTextField
        fullWidth
        onChange={this.handleNameChange}
        value={this.props.name}
      />
      

      【讨论】:

      • 终于找到了正确的答案,为什么 0 人赞成
      【解决方案3】:

      这样试试

      .MuiInput-underline-24:hover:not(.MuiInput-disabled-23):not(.MuiInput-focused-22):not(.MuiInput-error-25):before {
          border-bottom: 2px solid rgb(255, 255, 255) !important;
      }
      

      【讨论】:

      • 我尝试添加 !important 但似乎没有任何改变
      • 复制这个类并在你的css中害虫
      • 查看
      • 重试后,添加 !important 似乎有效。
      【解决方案4】:

      我查看了源代码,他们正在做这样的事情

      {
         focused: {},
         disabled: {},
         error: {},
         underline: {
          '&:before': {
              borderBottom: '1px solid rgba(255, 133, 51, 0.42)'
          },
          '&:after': {
              borderBottom: `2px solid ${theme.palette.secondary.main}`
          },
          '&:hover:not($disabled):not($focused):not($error):before': {
              borderBottom: `2px solid ${theme.palette.secondary.main}`
          }
      }
      

      它对我有用。

      【讨论】:

      • 谢谢!不幸的是,简单的 :hover 不起作用。
      猜你喜欢
      • 1970-01-01
      • 2018-01-20
      • 2018-07-06
      • 2019-12-14
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 2018-06-02
      • 2020-03-24
      相关资源
      最近更新 更多