"할 수 있는 거 정의해. 나머지는 grid 가 figure out 하게. Auto-flow 규칙이 스케일하는 grid 와 깨지는 grid 의 차이."
명시적 Grid
명시적 grid 는 grid-template-rows 와 grid-template-columns 로 선언하는 것. grid-template-columns: repeat(3, 1fr) 가 명시적 column 트랙 3 개 생성. grid-template-rows: 100px 100px 가 명시적 row 트랙 2 개 생성.
암묵적 Grid
명시적 grid 가 들 수 있는 것보다 항목이 많으면, grid 가 자동으로 새 트랙 추가 — 이게 암묵적 트랙. grid-template-columns: repeat(3, 1fr) 와 항목 7 개 가진 grid 가 column 3 (명시적) 과 row 3 (7 번째 항목용 하나 암묵적 — row 3 에는 항목 하나만) 만듦.
암묵적 트랙 sizing 은 이걸로 제어:
grid-auto-rows— 암묵적 row 크기. 기본auto(content 크기).grid-auto-columns— 암묵적 column 크기. 기본auto.
대부분 layout 은 명시적 grid overflow 시 새 row 를 균일하게 sizing 하려 grid-auto-rows: 200px 또는 minmax(120px, auto) 만 필요.
grid-auto-flow: 항목이 스스로 배치되는 방법
Auto-placement 가 항목이 어디 land 할지 결정. grid-auto-flow 가 전략 설정:
row(기본) — row 를 left-to-right, top-to-bottom 채움. Row 가 full 이면 새 row 시작.column— column 을 top-to-bottom, left-to-right 채움. Column 이 full 이면 새 column 시작.row dense또는column dense— 위와 같지만, grid 가 hole 을 backfill. 항목 5 가 2 column span 하고 현재 row 에 fit 안 되면, 기본 flow 가 hole 남김;dense가 그 hole 에 더 작은 늦은 항목 pack.
Masonry 같은 layout 용 dense packing
다양한 크기 카드 가지면 (일부는 1 column span, 일부는 2 column), grid-auto-flow: dense 가 작은 항목이 큰 항목이 남긴 갭 채우는 타이트한 masonry 같은 packing 만듦. Trade-off: 항목이 시각적으로 source 순서로 안 나타날 수 있어.
dense 가 source 순서 안 바꾸고 시각 출력 재정렬. 항목이 의미 있는 시퀀스 안 가질 때 (사진 grid, 서사 순서 없는 카드 리스트) OK. Source 순서가 읽기 순서일 때 (검색 결과 리스트, timeline) 해로움. 일반 layout 이 아니라 시각 완전성에 dense 써.span 과 결합
Auto-placement 가 개별 항목의 span 존중. 카드의 grid-column: span 2 가 그 카드를 2 column 너비로; auto-flow 가 거기에 맞춰 배치:
subgrid feature
subgrid 가 중첩 grid 로 하여금 부모의 트랙 정의 상속하게. Header, body, footer 가진 카드가 sibling 카드의 header, body, footer 와 정렬되어야 할 때 유용 — 각 카드가 자기 grid template 갖지 않고.
subgrid 가 모던 브라우저에 widely supported (baseline 2023). 카드 간 정렬 필요할 때 써; 아니면 자기 template 가진 중첩 grid 가 더 단순.
피파의 노트
grid-auto-flow: dense 사용. Dense packing 이 사진 순서 무관 갤러리가 보이는 hole 없음 — 작은 사진들이 큰 사진들이 남긴 갭에 자동 slot. 사진이 여전히 업로드 순서로 작성; 시각 배치만 재정렬. 갤러리에는 읽기 순서가 안 중요해서 dense 가 맞는 trade-off.