如何在 Material-UI 中自定义默认主题
总结
以下是定制React中常用的Material-UI主题的方法。有关默认主题,请参考『这里』。
自定义主题
在这里,我们将创建一个名为theme.js的文件。
import { createMuiTheme } from '@material-ui/core/styles';
// フォントを設定
const fontFamily = [
'Noto Sans JP',
'メイリオ',
'MS Pゴシック',
'sans-serif',
// 使用したいフォントを以降に羅列してください
].join(',');
/*****************
* テーマを設定
*****************
*/
const theme = createMuiTheme({
typography: {
fontFamily: fontFamily, // フォント
},
palette: {
// Primaryカラーを設定
primary: {
light: '#54C527',
main: '#ff9800',
dark: '#b26a00',
contrastText: '#000000',
mainGradient: 'linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)',
},
// Secondaryカラーを設定
secondary: {
light: '#33eb91',
main: '#00e676',
dark: '#00a152',
contrastText: '#ffffff',
},
type: 'dark', // ダークモードをON
},
mixins: {
// ツールバーの高さ
toolbar: {
minHeight: 64,
},
},
// 各パーツのスタイルをカスタマイズ
props: {
MuiCheckbox: {
color: 'primary',
},
MuiList: {
dense: true,
},
MuiTable: {
size: 'small',
},
MuiTextField: {
variant: 'outlined',
},
},
});
export default theme;
你可以在这里确认遵循Material Design规范的配色方案。
将主题应用于组件.
以下的示例适用于使用create-react-app创建的index.js文件。重点是导入MuiThemeProvider并将其应用于组件上。请将先前创建的theme.js作为参数传递。
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
// カスタムしたテーマ(スタイル)を定義
import { MuiThemeProvider } from '@material-ui/core/styles';
import theme from './styles/theme';
ReactDOM.render(
<React.StrictMode>
<MuiThemeProvider theme={theme}>
<App />
</MuiThemeProvider>
</React.StrictMode>,
document.getElementById('root')
);
reportWebVitals();