Условно переопределить стиль AntD Select в CSS

У меня есть форма, содержащая компонент antD Select.

          <Select
            name = "SeasonId"
            onChange = {onSeasonChange}
            placeholder = "Choose Season"
          >
            // Select Options
          </Select>

Условно переопределить стиль AntD Select в CSS

Я хочу иметь возможность изменять цвет границы (и тени блока) в зависимости от условия. Я могу изменить/переопределить нужный мне css, добавив следующее в отдельный файл CSS:

.ant-select-selector:hover {
  border-color: #1f9643e5 !important;
}

.ant-select-focused .ant-select-selector,
.ant-select-selector:focus,
.ant-select-selector:active,
.ant-select-open .ant-select-selector {
  border-color: #1f9643e5 !important;
  outline: 0 !important;
  -webkit-box-shadow: 0 0 0 2px rgba(49, 139, 54, 0.342) !important;
  box-shadow: 0 0 0 2px rgba(49, 139, 54, 0.342) !important;
}

Это меняет стиль на то, что мне нужно: #

Условно переопределить стиль AntD Select в CSS

Однако я хочу применить это переопределение стиля к Select только в том случае, если в коде выполняется определенное условие (т.е. у меня есть логическое состояние isEditMode). Я могу упустить что-то очевидное, но интересно услышать любые предложения.

Этот вопрос кажется довольно самоуверенным из-за переполнения стека, я думаю, вы получите отрицательный голос

Zach Jensz 19.03.2022 13:08

Извините, я не понимаю, что именно вы имеете в виду? Как бы вы предложили мне улучшить его?

CJH 19.03.2022 13:09

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

Zach Jensz 19.03.2022 13:12

«запрашивать предложения по улучшению кода, который, как вы говорите, уже работает» - я думал, что именно так должно было работать переполнение стека ...? Приведите пример того, куда вы попали, и спросите, как улучшить, чтобы соответствовать моим требованиям? Я признаю, что иногда я не самый лучший орфограф, поэтому был бы признателен, если бы вы могли посоветовать, где у меня опечатки ??

CJH 19.03.2022 13:24

Я ошибся, за тебя проголосовали. Опечатка в строке 3 "отдельно". Из того, что я слышал до сих пор от модов, следует избегать запросов предложений для вашего кода, я понимаю вашу точку зрения, и есть тонкая грань между предложением и решением.

Zach Jensz 19.03.2022 13:32

Чтобы на самом деле ответить на вопрос, я бы порекомендовал изучить собственные HTML-решения для ввода формы. Вы можете использовать отключенный атрибут для всех ваших входных данных формы, например, когда режим редактирования отключен, и стилизовать их на основе этого

Zach Jensz 19.03.2022 13:38

Спасибо за отзыв, я добавил немного больше деталей и исправил неизбежную опечатку.

CJH 19.03.2022 13:39
Приемы 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 сценарий полностью изменился.
2
7
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Используйте имя родительского класса для своего пользовательского кода CSS и примените имя класса к родительскому элементу, если условие равно true.

Пример, в вашем CSS-файле

.example.ant-select-selector:hover {
  border-color: #1f9643e5 !important;
}

и в вашем файле JSX,

<div className = {`${conditon ? 'example' :''}`} >
   <Select />
</div>

Спасибо за это....! Когда я вернусь, я попробую, но, похоже, это имеет смысл! Я обновлю, как только у меня будет возможность попробовать ваше предложение.

CJH 19.03.2022 13:37

Мне нравится это решение. Я бы изменил одну вещь: className = {`${isEditMode ? 'example' :''}`} на disabled = {isEditMode ? "false" : "true"}. Также @CJH старайтесь избегать использования !important, пытаясь решить проблему специфичности, с которой вы столкнулись.

Zach Jensz 19.03.2022 13:47

Свойство className не должно изменяться, оно задано для стиля. Если вы хотите отключить Select, чтобы пользователь не мог взаимодействовать, вам нужно предоставить disabled prop для Select Component. Кстати, он принимает логические значения, поэтому вы должны указывать true или false без кавычек.

rahuuzz 19.03.2022 14:37

Я реализовал ваше предложение, но, боюсь, все еще не повезло. Я буду продолжать копать и обновлять, если найду решение.

CJH 20.03.2022 00:12

Немного поковырялся, попробовал кое-что и все заработало. По сути, это то, что вы указали выше, однако обертка DIV не требовалась... Мне удалось добавить условие в свойство className компонентов Select. Также немного возился с css. Спасибо за это Rahuuzz!

CJH 20.03.2022 12:45

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