HTML, CSS
display: grid 기초 완전정복 – 2차원 레이아웃의 문을 열다
jonbeo
2025. 6. 5. 10:36
반응형
지금까지 Flexbox로 멋진 정렬과 반응형 레이아웃을 만들었다면,
이제는 2차원(행 + 열) 레이아웃을 더 강력하게 다룰 수 있는
CSS Grid의 차례입니다.
Flex가 “흐름 기반”이라면,
Grid는 “정해진 틀 기반”입니다.
그만큼 레이아웃 설계가 더 직관적이고 강력해져요!
✅ display: grid란?
.container {
display: grid;
}
이 한 줄로 Grid 컨테이너가 만들어집니다.
그리고 이 안에 있는 자식 요소들은 **행(row)과 열(column)**을 기준으로 정렬됩니다.
🧩 기본 속성 정리
속성 | 설명 |
grid-template-columns | 열(column) 개수 및 너비 설정 |
grid-template-rows | 행(row) 개수 및 높이 설정 |
gap | 셀 사이 간격 (row + column 동시에 가능) |
place-items | 한 줄로 정렬 설정 (align-items + justify-items) |
🎨 예시 1 – 3열 그리드 만들기
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;
}
<div class="container">
<div class="item">A</div>
<div class="item">B</div>
<div class="item">C</div>
</div>
📐 단위를 조절해볼까요?
grid-template-columns: 200px 1fr 2fr;
- 첫 번째 열은 고정 너비
- 두 번째는 남은 공간의 1
- 세 번째는 그보다 2배
→ 비율 + 고정값 조합이 가능한 게 Grid의 강점!
🌀 반복되는 열은 repeat()로 간단하게
grid-template-columns: repeat(3, 1fr);
→ 1fr 1fr 1fr 과 같지만 더 짧고 가독성 좋음
🧭 Flex와 Grid의 결정적 차이
비교 항목 | Flexbox | Grid |
레이아웃 구조 | 흐름 기반 | 격자 기반 |
방향성 | 1차원 (row or column) | 2차원 (row + column) |
위치 지정 | 순서 기반 | 위치 직접 지정 가능 |
대표 용도 | 정렬, 메뉴, 버튼 줄 | 전체 레이아웃 구성, 복잡한 배치 |
반응형