"Grid 는 좌표 시스템. 트랙 정의하면 항목이 셀로 snap. 처음부터 2D 로 생각해."
Grid 어휘
- 트랙 — row 또는 column. Grid 는 row 트랙과 column 트랙 가짐.
- 라인 — 트랙 사이 (또는 주위) 경계. 라인은 1 부터 번호.
- 셀 — 한 row 와 한 column 의 교차. 배치의 가장 작은 단위.
- 영역 — 셀 하나 이상의 직사각형. 항목이 영역 점유 가능.
- 항목 — grid 컨테이너의 직접 자식; 셀 하나 이상 점유.
트랙 선언
grid-template-columns 와 grid-template-rows 로 트랙 정의. 리스트의 각 값이 트랙 하나의 크기:
grid-template-columns: 100px 200px 300px— 정확히 그 너비의 column 셋.grid-template-columns: 1fr 2fr 1fr— 공간을 1:2:1 비율로 공유하는 column 셋.fr은 "남은 공간의 fractional unit" 의미.grid-template-columns: 240px 1fr— 고정 사이드바 + 유연 main. 클래식 2 column 앱 셸.grid-template-columns: repeat(3, 1fr)— 동등 column 셋.repeat(N, value)가 트랙 정의 N 번 반복.grid-template-columns: repeat(auto-fit, minmax(200px, 1fr))— fit 하는 만큼의 200px+ column, 각자 남은 공간 채우게 확장. 반응형 grid 한 줄.
fr 단위
fr = fractional. 너가 명시한 비율로 남은 공간 (고정 크기 트랙 차감 후) 분배. 1fr 1fr = 50/50. 2fr 1fr 1fr = 50/25/25. 240px 1fr = 사이드바 240px, main 이 나머지. fr 이 컨테이너의 content 영역에 작동; 고정 크기 트랙이 먼저 빼지고, 그 다음 fr 이 남은 거 나눔.
minmax() 함수
minmax(100px, 1fr) = "최소 100px, 최대 1fr". 반응형 grid 의 핵심 — column 이 컨테이너 줄어들어도 읽기 가능하게 유지, 컨테이너 넓을 때 추가 공간 채우게 확장.
repeat() 함수
repeat(3, 1fr)— 정확히 동등 트랙 셋.repeat(auto-fill, 200px)— fit 하는 만큼의 200px 트랙; 트랙이 200px 너비 유지. 빈 트랙이 남음 (공간 예약).repeat(auto-fit, 200px)— 같지만, 빈 트랙이 collapse 하고 기존 항목이 채우게 확장.repeat(auto-fit, minmax(200px, 1fr))— 반응형 grid. 카드가 최소 200px; 컨테이너에 4 개 공간 있으면 4 column; 2 개만 fit 하면 카드가 행 채우게 확장.
auto-fit vs auto-fill: grid 에 트랙 채울 항목이 충분할 때 동일. 항목이 트랙보다 적을 때: auto-fill 이 빈 공간 둠 (grid 모양 보존); auto-fit 이 빈 트랙 collapse 하고 기존 항목을 행 채우게 stretch. 거의 모두가 콘텐츠 카드에 auto-fit 원해.
암묵적 트랙
명시적 grid 가 가진 셀보다 항목이 많으면, Grid 가 추가 row (또는 column) 자동 생성. 이 암묵적 트랙 의 크기는 grid-auto-rows / grid-auto-columns 로 제어. 기본 auto (content 로 크기).
Gap
Grid 컨테이너의 gap: 1rem 이 모든 row 와 모든 column 사이에 1rem 공간. row-gap: 2rem; column-gap: 1rem 이 독립 설정. Flexbox 와 같은 property 이름; 같은 semantic.
항목 배치
항목이 source 순서로 셀에 자동 snap (auto-placement, 다음 레슨이 세부). Override 하려면 grid-column 과 grid-row 써:
grid-column: 1 / 3— column 라인 1 부터 column 라인 3 까지 span (= 셀 둘).grid-column: 1 / -1— 라인 1 부터 마지막 라인까지 span.-1이 항상 "마지막 명시적 라인" 의미. 다중 column grid 의 풀 너비 header 에 유용.grid-column: span 2— auto-placement 가 항목을 놓는 자리에서 2 column span.grid-area: 2 / 1 / 4 / 3— row-start / column-start / row-end / column-end. 네 값, 풀 배치.
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) 가 카드 기반 layout 의 media query 80% 대체. 한 선언, 무한 반응형 행동.피파의 노트
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)). 1600px 모니터에서 row 당 quest 카드 5 개 보여 줌; 768px 태블릿에서 2-3; 폰에서 1. Grid 자체용 media query 0. Quest 콘텐츠 페이지가 사이드바 + main + meta layout 에 명명된 영역 (다음 레슨) 사용. 두 패턴, dozens 의 페이지.