" /> React - Grid | BlackWerf's Blog
포스트

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>
    

    Image Alt 텍스트








참고한 자료

실전! 스프링 부트와 리액트로 시작하는 모던 웹 애플리케이션 개발2

Grid

이번에야말로 CSS Grid를 익혀보자

[React] 리액트 한줄에 4개씩 표시하기 (특정 개수 표시 후 줄바꿈, display:grid 사용)












  1. 레이아웃 배치용으로 개발되었으며, 가로 혹은 세로 축으로 아이템을 정렬하는 레이아웃이다 

  2. 주하 힌쿨라, 실전! 스프링 부트와 리액트로 시작하는 모던 웹 애플리케이션 개발, 위키북스, 2023, 171p 

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.