React - Grid
※본 블로그에서는 MUI를 이용하여 Grid를 구현하였다
Grid
정의
- Grid란 가로 세로 방향으로 컴포넌트의 배치를 가능하게 하는 2차원 레이아웃 시스템이다
- MUI에서의 Grid는 더 높은 유연성을 위해 CSS FlexBox1를 기반으로 작동된다
특징
- 스마트폰(xs), 태블릿(sm), 데스크톱(md, lg, xl) 별 UI 설정이 가능하다
- 각 줄은 12개의 컬럼으로 표시되며 해상도 별로 원하는 개수로 띄울수 있다
- 예시 xs={6} : 12/6=2로 각 줄별로 2개씩 데이터를 표시한다
- Flexbox 기반의 다양한 방식의 값 적용이나 순서 반대로 띄우기 등 다양한 방식의 콘텐츠 정렬이 가능함
사용 방법
- container 프롭을 이용하여 그리드 컨테이너를 생성한다
- Grid Item 컴포넌트는 항상 Grid 컨테이너 내부의 아이템에 존재해야하며, item을 명시해야 함
- 아이템별 간격의 경우, container 내부에 spacing={3}와 같이 값을 넣어 간격을 줄 수 있다
- 그리드 내부에서 아이템 배치 위치 등을 하기 위해서는 sx= 내부에 코드를 넣어주면 적용이 가능하다
- 아이템의 크기 설정은 공용 크기인 size와 각 디바이스별 해상도(xs, sm, md, lg, xl)별로 설정이 가능하며, 크기에 flexGrow를 넣어줄 경우, 자동으로 크기가 지정된다
예시 코드
1
2
3
<Grid container>
<Grid item xs={6}> <Typography>Hello</Typography> </Grid>
</Grid>
이 코드에서 xs는 아이템의 길이를 의미한다
한줄은 기본값으로 12의 크기를 가지며, 아이템의 size가 6을 가질 경우, 12/6=2로 컨테이너의 절반의 크기를 가지게 된다
- 이 한줄의 크기는 columns={10}와 같이 부모 그리드 컨테이너에서 크기 설정이 가능하다
xs, sm, md, lg, xl의 다양한 해상도별 크기 설정이 가능하다
이런식으로 사용이 가능하다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
<Container maxWidth="md"> <Grid container rowSpacing={1} columnSpacing= sx=> {tempData.map((item) => ( <Grid item key={item.id} xs={6} sm={4} md={3} > <Box sx= onClick={() => alert(`실행됨 ${item.id}`)}> <Typography variant="h6">{item.title}</Typography> <Typography variant="body2">{item.content}</Typography> </Box> </Grid> ))} </Grid> </Container>
참고한 자료
실전! 스프링 부트와 리액트로 시작하는 모던 웹 애플리케이션 개발2
[React] 리액트 한줄에 4개씩 표시하기 (특정 개수 표시 후 줄바꿈, display:grid 사용)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
