그리드 레이아웃 요약, 함수, 단위 - by. UXKM
- Publishing
- CSS
- CSS 고급
- 그리드 레이아웃 요약, 함수, 단위
요약 설명
CSS Grid는 웹 페이지 컨텐츠를 행과 열로 나눌 수 있는 2차원 레이아웃 시스템입니다.
display: grid 또는 display: inline-grid로 설정한 요소가 그리드 컨테이너가 되며, 그 안에 포함된 자식 요소들이 그리드 아이템이 됩니다.
flex는 1차원 레이아웃(행 또는 열)을 다루지만, grid는 2차원 레이아웃(행과 열)을 다룹니다.
복잡한 레이아웃을 구현하는 데 유용하며, 브라우저 대부분이 완벽하게 지원하고 있습니다.
요약 설명
플랙스박스는 콘텐츠에 초점을 맞추고, 그리드는 레이아웃을 먼저 고려합니다.
그리드 요약설명
grid container : 전체 그리드 레이아웃을 감싸는 역할을 수행합니다. display: grid | inline-grid; 속성을 통해 지정할 수 있습니다.
grid item : grid container에 속해있는 하위 DOM 요소를 뜻합니다.
grid track : 그리드 레이아웃에 존재하는 행 또는 열을 의미합니다. grid track의 개수는 명시적으로 지정할 수도, 암묵적으로 늘어나게 할 수도 있습니다.
grid line : grid track을 구분하는 선을 의미합니다. 선의 번호는 위에서 아래로(↓), 왼쪽에서 오른쪽으로(→) 매겨집니다. 그리드 라인의 번호는 1부터 시작된다는 점을 주의해야 합니다.
grid cell : 그리드 레이아웃에서 가장 작은 단위 요소이며, 테이블의 셀과 유사합니다.
grid area : 다수의 grid cell로 이루어진 영역을 뜻합니다. grid area는 항상 사각형의 모양을 가져야 합니다. (ㄴ자, ㄱ자 형태 불가능)
display: grid;

CSS3 Grid 모듈 속성을 컨테이너, 아이템 별로 정리
-
그리드 컨테이너(grid container)
display : 그리드 컨테이너를 지정합니다.
grid-template-rows : 행의 크기를 정의합니다.
grid-template-columns : 열의 크기를 정의합니다.
grid-template-areas : 영역 이름을 사용하여 레이아웃을 정의합니다.
grid-template : 행, 열, 영역을 한 번에 정의합니다.
row-gap : 행 사이 간격을 설정합니다.
column-gap : 열 사이 간격을 설정합니다.
gap : 행과 열 사이 간격을 동시에 설정합니다.
justify-items : 행 축에서 아이템을 정렬합니다.
align-items : 열 축에서 아이템을 정렬합니다.
justify-content : 행 축에서 그리드를 정렬합니다.
align-content : 열 축에서 그리드를 정렬합니다.
grid-auto-rows : 암시적 행의 크기를 설정합니다.
grid-auto-columns : 암시적 열의 크기를 설정합니다.
grid-auto-flow : 자동 배치 방향을 설정합니다.
grid : 그리드 관련 속성을 한 번에 설정합니다.
-
그리드 아이템(grid item)
grid-row-start : 행 시작 위치를 지정합니다.
grid-row-end : 행 끝 위치를 지정합니다.
grid-column-start : 열 시작 위치를 지정합니다.
grid-column-end : 열 끝 위치를 지정합니다.
grid-row : 행 시작과 끝을 한 번에 지정합니다.
grid-column : 열 시작과 끝을 한 번에 지정합니다.
grid-area : 영역 이름 또는 위치를 지정합니다.
justify-self : 행 축에서 개별 아이템을 정렬합니다.
align-self : 열 축에서 개별 아이템을 정렬합니다.
플랙스박스(flexible box) 와 그리드(grid)의 차이점
- 플랙스박스 : 레이아웃을 조정할 때 오직 가로 행 혹은 세로 열만 고려하여 작업할 때 사용합니다.
- 그리드 : 레이아웃을 조정할 때 가로 행과 세로 열 모두를 염두에 두고 작업할 때 사용합니다.
[ grid vs flex ]
grid에서 사용되는 주요 용어 정리
그리드에서 사용하는 주요 용어에 대해서 설명합니다.
grid
HTML 요소에 display 속성 값으로 grid를 설정하면 그리드 컨테이너가 됩니다.
그리드 컨테이너는 행(rows)과 열(columns)을 가지며, 그리드 아이템을 배치할 수 있습니다.
[ grid ]
line
선(line)은 그리드의 행/열을 구분하는 선을 의미합니다.
각 선은 라인 번호를 가지며, 그리드 아이템을 배치하는 기준으로 사용됩니다.
[ line ]
track
트랙(track)은 그리드 라인 사이의 행 또는 열 공간을 의미합니다.
[ track ]
cell
셀(cell)은 4개의 그리드 라인이 묶여 그려지는 가장 작은 단위입니다.
[ cell ]
area
영역(area)은 하나 이상의 셀로 이루어진 영역입니다.
고유한 식별자를 가지며, 식별자를 통해 요소를 배치할 수 있습니다.
[ area ]
gutters
그리드 거터는 행 또는 열 사이 간격(gap)을 말합니다.
gap(row, column 동시 선언), row-gap, column-gap 속성으로 제어합니다.
[ gutters ]
grid functions
그리드에서 사용하는 주요 용어에 대해서 설명합니다.
repeat
repeat() 함수는 행/열의 크기 정의를 반복합니다.
첫 번째 인자는 반복 횟수, 두 번째 인자는 행/열의 크기 정의를 사용하며, grid-template-rows와 grid-template-columns에서 사용합니다.
W3C Flexible Lengths: the fr unit 참조
[ repeat function ]
minmax
minmax() 함수는 행/열의 최소/최대 크기를 정의합니다.
첫 번째 인수는 최솟값, 두 번째 인수는 최댓값이며, grid-template-rows, grid-template-columns, grid-auto-rows, grid-auto-columns에서 사용합니다.
[ minmax function ]
fit-content
fit-content() 함수는 행/열의 크기를 그리드 아이템의 내용 크기에 맞춥니다.
내용의 최대 크기를 인수로 사용하며, minmax(auto, max-content)와 유사합니다.
[ grid-template-columns: fit-content(300px) fit-content(300px) 1fr; ]
grid units
그리드에서 사용하는 주요 단위들에 대해서 설명합니다.
fr
fr(fractional unit)은 사용 가능한 공간에 대한 비율을 의미합니다.
그리드 컨테이너의 여유 공간을 비율로 나눠 설정하며, 퍼센트(%) 단위와 달리 길이가 아니므로 calc() 함수에서 다른 값과 함께 처리할 수 없습니다.
[ fr(fractional unit) 사용 예시 ]
min-content
그리드 아이템이 포함하는 내용의 최소 크기를 의미합니다.
한글을 사용할 경우 word-break: keep-all;을 선언하면 정상적으로 작동합니다.
[ 한글을 사용하는 경우 word-break: keep-all;를 설정 ]
max-content
그리드 아이템이 포함하는 내용의 최대 크기를 의미합니다.
[ min-content / max-content ]
auto-fill, auto-fit
아이템의 개수를 알 수 없을 때 auto-fit, auto-fill을 사용합니다.
repeat() 함수와 함께 사용하며, 행/열의 개수를 자동으로 조정합니다. 반응형 그리드에 유용합니다.
[ auto-fill & auto-fit ]
코드 예제
[ auto-fill 유/무의 차이 ]
auto-fill과 auto-fit의 차이
auto-fill과 auto-fit의 차이점은 그리드 컨테이너가 하나의 행/열(Track)에 모든 아이템을 수용하고 남는 공간이 있을 때 발생합니다.
auto-fill은 남는 공간(빈 트랙)을 그대로 유지하고, auto-fit은 남는 공간을 축소합니다.
자동 채우기(auto-fill)
채움(fill)은 반복 횟수만큼 계산하여 처리하지만 정해진 수 이상은 처리하지 않습니다.
자동 채우기(auto-fit)
맞춤(fit)은 채움과 유사하게 작동하지만, 빈 트랙이 존재할 경우 빈 공간을 나눠 맞춥니다.
[ auto-fill과 auto-fit의 차이 ]