Глобальное обрисованное переопределение

Каким образом я могу переопределить глобальную тему таким образом, чтобы этот стиль влиял на все компоненты, использующие вариант = 'контурный'. Также хотелось бы переопределить такие события, как фокус, зависание и т. Д.

 "@material-ui/core": "^3.9.2",

1 ответ

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

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

Документация по настройке всех экземпляров типа компонента находится здесь: https://material-ui.com/customization/themes/.

Следующий ресурс - просмотреть CSS-часть документации API для компонента, который вы хотите переопределить. Например, Button Документация находится здесь: https://material-ui.com/api/button/.

В нижней части документации CSS будет строка, подобная следующей в Button:

При использовании overrides ключ темы, вам нужно использовать следующее имя таблицы стилей: MuiButton,

Точно так же вот ссылка для OutlinedInput: https://material-ui.com/api/outlined-input/

Для некоторых настроек вам может понадобиться посмотреть, как стили по умолчанию определены в исходном коде, чтобы понять, как правильно их переопределить.

Вот пример, показывающий настройки OutlinedInput а также Button, Я также включил не обрисованные в общих чертах версии, чтобы показать, что на них не влияют настройки в теме.

import React from "react";
import ReactDOM from "react-dom";
import TextField from "@material-ui/core/TextField";
import Button from "@material-ui/core/Button";
import { createMuiTheme, MuiThemeProvider } from "@material-ui/core/styles";
const theme = createMuiTheme({
  overrides: {
    MuiOutlinedInput: {
      root: {
        "& $notchedOutline": {
          borderColor: "green"
        },
        "&$focused $notchedOutline": {
          borderColor: "orange"
        },
        color: "purple"
      },
      notchedOutline: {}
    },
    MuiButton: {
      outlined: {
        borderColor: "purple",
        color: "red"
      },
      outlinedPrimary: {
        borderColor: "brown"
      }
    }
  }
});
function App() {
  return (
    <MuiThemeProvider theme={theme}>
      <TextField variant="outlined" defaultValue="My Text" />
      <br />
      <br />
      <TextField defaultValue="Not customized" />
      <br />
      <br />
      <Button variant="outlined">Outlined Button</Button>
      <br />
      <br />
      <Button color="primary" variant="outlined">
        Outlined Button - Primary
      </Button>
      <br />
      <br />
      <Button>
        Text Button - unaffected by customization to outlined button
      </Button>
    </MuiThemeProvider>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

Редактировать OutlinedInput

Связанный ответ: Измените схему для OutlinedInput с React material-ui

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