Материал ui Панель приложений изменение цвета текста на белый / назад функциональность

#reactjs #material-ui

Вопрос:

Как панель приложений material ui меняет цвет текста на белый / черный в зависимости от того, темный или светлый цвет панели приложений. Есть ли функция, которую я могу использовать в интерфейсе material? я проверил их документ и не смог найти функцию сам, я попробовал css

 <style>
.container {
  background-color: #ff0001;
  padding: 15px;
}

.container p {
  mix-blend-mode: difference;
  color: white
}
</style>



<div class="container">
  <p> asd </p>
</div>
 

Но это дает не только белый / черный цвет

Ответ №1:

Интерфейс Material UI имеет встроенную поддержку для легкого переключения между светлым и темным режимами. Все, что вам нужно сделать , это создать объекты темы для обоих режимов, обернуть код с помощью a ThemeProvider и использовать состояние (и контекст) для переключения между светлым и темным режимами. Ссылочные ссылки:


  1. Поставщик тем
  2. Объект темы. Здесь вы можете настроить palette.type свойство так light или dark иначе в соответствии с вашим удобством.

Правка:

Материал-пользовательский интерфейс использует main цвет в palette.primary/secondary качестве входных данных, чтобы получить идеальный контрастный цвет текста. Это работает для всех компонентов MUI (например, панели приложений). Точный исходный код доступен здесь, в getContrastText функции. Они также связали источники в коде, которые используют scss для достижения того же самого.

Я не до конца понял логику этой реализации, но надеюсь, что связанный код ответит на ваш вопрос.

Правка 2:

Его getContrastText можно использовать с theme объектом следующим образом:

 const useStyles = makeStyles(theme => ({
  "key": {
    "color": theme.palette.getContrastText("#cfe8fc") // returns rgba(0,0,0,0.87)
  }
})
 

Этот theme объект также можно получить с помощью useTheme крючка или withStyles специального.

Комментарии:

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

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

3. @ZOthix, теперь я понимаю, что ты имеешь в виду. Я отредактировал свой ответ, чтобы он был более подходящим.

4. Пожалуйста, добавьте пример кода, чтобы получить контрастный цвет theme.palette.getContrastText("YourColorHere") , чтобы другим было легче получить этот ответ