일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자스코테
- 정보처리기사
- 오라클
- 자바의정석
- javascript
- php
- 이안의평일코딩
- 자바스크립트 코딩테스트
- VUE
- 국비IT
- spring
- ReactNative
- react
- 리액트네이티브
- Java의정석
- 리액트
- Oracle
- CSS
- 정보처리기사실기정리
- 코딩테스트
- 자바스크립트
- 정보처리기사실기
- 정보처리기사요약
- 정보처리기사실기요약
- 국비코딩
- 평일코딩
- typescript
- 스프링
- 타입스크립트
- 정보처리기사정리
- Today
- Total
이안의 평일코딩
[Material-UI] 기초(2) - 컴포넌트 레이아웃(Container, Grid) 본문
Material-UI에서 제공하는 컴포넌트의 종류는 도큐먼트들을 다 읽어보기 힘들 정도로 많다.
크게 Layout, Inputs, Navigation, Surfaces, Feedback, Data Display, Utils, Lab로 나눌 수 있고,
세부적으로 다 다루기보다 활용해서 적응할 수 있게끔 대표적인 예시를 들어가며 배우면 좋다.
Layout
먼저, 레이아웃에는 Box, Container, Grid, Hidden, Image List가 있다.
Box는 div를 대체하는 강력하고 편리한 컴포넌트로 tailwind CSS 방식이고
Container는 레이아웃을 잡을 때 좌우 간격, 중앙 위치시킬 때 사용하며
최대 너비 제한 fluid모드와 동일 너비 강제 fixed 모드가 있다.
Grid는 Container 안의 레이아웃을 핸들링해주고 반응형으로 배치시켜야 하는 경우 유용하다.
Container
Grid의 breakpoints는 총 5개로 이루어져 있다. xl, lg, md, sm, xs
import React from 'react';
import { Grid, Box } from "@material-ui/core";
import { Container, Typography } from "@material-ui/core";
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles((theme) => ({
container: {
background: theme.palette.warning.main,
},
}));
export default () => {
const classes = useStyles();
return (
<>
<Container maxWidth="xl" className={classes.container}>
<Typography variant="h6" color="primary">
xl
</Typography>
</Container>
<br />
<Container maxWidth="lg" className={classes.container}>
<Typography variant="h6" color="primary">
lg
</Typography>
</Container>
<br />
<Container maxWidth="md" className={classes.container}>
<Typography variant="h6" color="primary">
md
</Typography>
</Container>
<br />
<Container maxWidth="sm" className={classes.container}>
<Typography variant="h6" color="primary">
sm
</Typography>
</Container>
<br />
<Container maxWidth="xs" className={classes.container}>
<Typography variant="h6" color="primary">
xs
</Typography>
</Container>
</>
);
}
그리고 fluid와 fixed모드로 나눌 수 있는데, fluid 모드는 fixed를 생략하면되고 fixed는 Container에 넣어주면 된다.
<Container fixed maxWidth="xl" className={classes.container}>
<Typography variant="h6" color="primary">
xl
</Typography>
</Container>
<Container maxWidth="lg" className={classes.container}>
<Typography variant="h6" color="primary">
lg
</Typography>
</Container>
fluid는 유동적으로 브라우저의 크기에 맞게 줄어들지만,
fixed는 해당 사이즈보다 브라우저 크기가 작아지면 xl->lg->md->sm->xs 순으로 줄어들게 된다.
Grid
Material UI는 12열 격자(grid)로 이루어져 있고 각 브레이크포인트(breakpoint) 별로 각 셀이 몇 열을 차지할 것인지 정할 수 있다.
import React from 'react';
import { Grid, Box } from "@material-ui/core";
export default () => {
return (
<>
<Grid container spacing={1}>
<Grid item xs={12}>
<Box bgcolor="primary.main" color="info.contrastText" p={2}>
1
</Box>
</Grid>
<Grid item xs={12} sm={6}>
<Box bgcolor="warning.main" color="info.contrastText" p={2}>
2
</Box>
</Grid>
<Grid item xs={12} sm={6}>
<Box bgcolor="warning.main" color="info.contrastText" p={2}>
3
</Box>
</Grid>
<Grid item xs={6} sm={3}>
<Box bgcolor="error.main" color="info.contrastText" p={2}>
4
</Box>
</Grid>
<Grid item xs={6} sm={3}>
<Box bgcolor="error.main" color="info.contrastText" p={2}>
5
</Box>
</Grid>
<Grid item xs={6} sm={3}>
<Box bgcolor="error.main" color="info.contrastText" p={2}>
6
</Box>
</Grid>
<Grid item xs={6} sm={3}>
<Box bgcolor="error.main" color="info.contrastText" p={2}>
7
</Box>
</Grid>
</Grid>
</>
);
}
브라우저의 크기가 줄어들면 아래와 같이 변경된다.
복수로 breakpoints를 지정해두면 브라우저 크기가 줄어들면 지정된 크기로 변화한다.
https://css-tricks.com/snippets/css/a-guide-to-flexbox/
참고로 flexbox는 위의 사이트에서 확인하면 쉽게 알아볼 수 있다.
'Front-end > Material-UI' 카테고리의 다른 글
[Material-UI] 기초(3) - styles, theme (0) | 2021.09.09 |
---|---|
[Material-UI] 기초(1) - 설치 및 시작하기 (0) | 2021.09.08 |