
Material UI 사용자 정의: 버튼 색상 사용자 정의하기
Material UI (v1)에서 버튼 색상을 수정하는 데 어려움을 겪고 Bootstrap과 유사한 테마를 설정하고자하는 경우, 올바른 곳에 왔습니다. 이 블로그 포스트에서는 Material UI에서 버튼 색상을 사용자 정의하는 다양한 옵션과 원하는 효과를 얻는 방법을 살펴보겠습니다.
옵션 1: Material UI v5에서 색상 사용자 정의하기
Material UI v5에서 버튼에 사용자 정의 색상을 만드는 것은 직관적이며, 새로운 테마를 생성하여 달성할 수 있습니다. 기본 및 보조 색상은 createTheme 함수를 사용하여 정의할 수 있습니다. 다음은 예시입니다:
import { createTheme } from '@mui/material/styles';
const theme = createTheme({
palette: {
anger: createColor('#F40B27'),
apple: createColor('#5DBA40'),
steelBlue: createColor('#5C76B7'),
violet: createColor('#BC00A3'),
},
});
테마에서 사용자 정의 색상을 정의한 후에는 색상 prop을 지정하여 버튼에서 사용할 수 있습니다. 예를 들면:
<Button color="anger" variant="contained">
anger
</Button>
TypeScript를 사용하는 경우, 테마에서 정의한 색상에 대한 추가적인 타입을 추가하여 타입 오류를 방지하세요.
옵션 2: 인라인으로 버튼 스타일 사용자 정의하기
인라인 스타일링을 선호하는 경우, style prop을 사용하여 버튼 컴포넌트에 직접 사용자 지정 스타일을 적용할 수 있습니다. 다음은 예시입니다:
<Button
style={{
borderRadius: 35,
backgroundColor: "#21b6ae",
padding: "18px 36px",
fontSize: "18px"
}}
variant="contained"
>
Submit
</Button>
옵션 3: MuiThemeProvider를 사용하여 버튼 색상 사용자 정의하기
다른 방법은 material-ui 패키지에서 MuiThemeProvider를 사용하는 것입니다. 이 접근 방식을 사용하면 각 버튼 색상에 대해 별도의 테마를 정의하고 적용할 수 있습니다. 다음은 예시입니다:
import { MuiThemeProvider, createMuiTheme } from 'material-ui/styles';
import Button from 'material-ui/Button';
import { red, blue } from 'material-ui/colors';
const redTheme = createMuiTheme({ palette: { primary: red } });
const blueTheme = createMuiTheme({ palette: { primary: blue } });
class Buttons extends Component {
render = () => (
<div className="ledger-actions-module">
<MuiThemeProvider theme={redTheme}>
<Button color="primary" variant="raised">
Delete
</Button>
</MuiThemeProvider>
<MuiThemeProvider theme={blueTheme}>
<Button color="primary" variant="raised">
Update
</Button>
</MuiThemeProvider>
</div>
)
}
옵션 4: 사용자 정의 버튼 컴포넌트 만들기
위의 옵션 중 어느 것도 요구 사항에 맞지 않는 경우, styled-components와 material-ui와 같은 라이브러리를 사용하여 사용자 정의 버튼 컴포넌트를 만들 수 있습니다. 이 접근 방식은 버튼의 스타일링과 테마 설정에서 더 많은 유연성을 제공합니다. 다음은 예시입니다:
import React from "react";
import { createStyles, Theme, makeStyles } from "@material-ui/core/styles";
import capitalize from "lodash/capitalize";
import MuiButton, {
ButtonProps as MuiButtonProps
} from "@material-ui/core/Button";
export type ColorTypes =
| "primary"
| "secondary"
| "error"
| "success"
| "warning"
| "default"
| "inherit"
| "info";
type ButtonProps = { color: ColorTypes } & Omit<MuiButtonProps, "color">;
const useStyles = makeStyles<Theme>(theme =>
createStyles({
outlinedSuccess: {
borderColor: theme.palette.success.main,
color: theme.palette.success.main
},
outlinedError: {
borderColor: theme.palette.error.main,
color: theme.palette.error.main
},
// ... 다른 색상에 대한 스타일 계속 작성
})
);
const Button: React.FC<ButtonProps> = ({ children, color, ...props }) => {
const classes = useStyles();
const className = classes?.[`${props.variant}${capitalize(color)}`];
return (
<MuiButton {...props} color={color} className={className}>
{children}
</MuiButton>
);
};
// 사용법: <Button variant="contained" color="success">Click me</Button>
이러한 옵션으로 Material UI v1에서 버튼 색상을 사용자 정의하는 여러 가지 방법이 제공됩니다. 요구 사항에 가장 적합한 방법을 선택하고 버튼에 원하는 모양과 느낌을 구현하세요.
이 블로그 포스트에 안내된 단계를 따라가면 Material UI에서 버튼 색상을 쉽게 사용자 정의하고 시각적으로 매력적이고 일관된 디자인을 애플리케이션에 적용할 수 있게 됩니다.