Цвет подчеркивания компонента ввода Material-UI Input

Я пытаюсь создать компонент ввода с белым подчеркиванием. В настоящее время, когда пользователь наводит курсор на компонент, цвет подчеркивания меняется на черный. Я ожидал, что это будет белым. Я считаю, что это должно быть возможно, переопределив класс подчеркивания, как в демонстрации и обрисовано в общих чертах ниже. К сожалению, похоже, что это не работает, но если я проверю стили вручную в браузере и удалю строку ниже, в браузере все будет работать должным образом.

Пример: 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);

Стиль класса overide, который я использую:

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-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
8
0
10 649
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

попробуй вот так

.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, но ничего не изменилось

Chris 06.06.2018 15:06

скопируйте этот класс и вредитель в свой css

Hardik Prajapati 06.06.2018 15:11

См. Index.html в <style> </style>

Hardik Prajapati 06.06.2018 15:24

После повторной попытки добавление! Important, похоже, работает.

Chris 06.06.2018 18:49

Я взглянул на исходный код, и они делают что-то вроде этого

{
   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 не работает.

Martin Konicek 16.01.2020 17:06

Вдохновленный ответом Гийома, вот мой рабочий код, упрощенный, если вас не волнует состояние ошибки:

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 голосов за

steve moretz 10.06.2020 22:20

Сначала добавьте свой ввод следующим образом

<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;
}

Здесь перед предоставит вам всегда видимый доступ к подчеркиванию, а после предоставит вам доступ к подчеркиванию после щелчка. Теперь просто делай то, что хочешь

Другие вопросы по теме