선 이름을 1개 이상 설정할 수 있습니다. [이름-1 이름-2]와 같이 [] 내부에 공백으로 구분된 이름을 추가하면 됩니다.
설정이 반복되는 경우 repeat() 함수를 사용하면 간단하게 설정할 수 있습니다.
fr 단위를 사용하면 <track-size>를 그리드의 남은 공간 일부로 설정할 수 있습니다.
fr 단위는 고정 값(px, rem 등) 단위가 먼저 계산된 후 남은 공간을 사용하여 계산됩니다.
만약 1200px 너비의 ‘12컬럼 그리드 템플릿’을 정의한다면 다음과 작성할 수 있습니다.
위 예제에서는 12개의 열(컬럼) 크기를 각각 하나씩 지정하여 관리의 어려움이 있습니다. repeat() 함수를 사용하면 위 예제를 다음과 같이 간소화 할 수 있습니다.
컬럼을 크기를 fr(fraction, 공간 비율) 단위를 사용해 다음과 같이 비율로 지정할 수도 있습니다.
각 컬럼은 비율에 맞게 출력되기 때문에 컨테이너의 너비가 가변해도 열 크기를 수정할 필요가 없습니다.
repeat() 함수는 2번째 인수를 반복하기 때문에 다음과 같이 활용할 수 있습니다.
트랙 값 사이에 빈 공간을두면 그리드 선에 양수와 음수가 자동으로 할당됩니다. (위 '명시적으로 줄 이름을 지정' 이미지 참조)
라인은 하나 이상의 이름을 가질 수 있습니다. 예를 들어, 두 번째 줄의 이름은 row1-end와 row2-start입니다.
여러 줄이 같은 이름을 공유하는 경우 해당 줄 이름과 개수로 참조 할 수 있습니다.
grid-template-row
grid-template-rows
각 행의 크기를 지정할 수 있습니다.
각 라인의 이름도 함께 지정할 수 있습니다.
라인에 중복된 이름을 지정할 수 있습니다.
각 라인은 행(row, track)과 열(column, track)의 개수대로 숫자(양수/음수) 라인 이름이 자동으로 지정되어 있어서,
꼭 필요한 경우가 아니면 라인 이름을 지정할 필요가 없습니다.
grid 템플릿 영역
grid-area 속성으로 설정된 그리드 영역의 이름을 참조하여 그리드 템플릿 영역을 설정할 수 있습니다.
그리드 영역 이름을 반복하면 그리드 셀을 병합(merge, span)하며, 마침표(.)는 비어있는 그리드 셀을 의미합니다.
grid-template-areas
영역(area) 이름을 참조하여 템플릿을 생성할 수 있습니다.
<grid-area-name> : 사용자가 grid-area 속성 값으로 설정한 임의의 그리드 영역 이름
마침표(.) : 비어있는 그리드 셀
none : 그리드 영역으로 지정되지 않은 셀
다음은 3행 4열 그리드 템플릿 영역 설정 예제입니다.
명시적으로 그리드(explicit grids)를 지정할 때 그리드 컨테이너에 3개의 속성을 사용할 수 있습니다.
grid-template-rows
grid-template-columns
grid-template-areas
grid 템플릿 속기형
그리드 템플릿 행 / 열 / 영역 이름 설정을 속기형(shorthand)으로 설정 가능합니다.
grid-template
grid-template-xxx의 단축 속성입니다. grid-template 속성은 grid-template-{rows, columns, areas} 속성을 축약형으로 사용할 수 있도록 합니다.
grid-none : 3가지 설정을 모두 초기 값으로 적용
grid-template-rows / grid-template-columns : 행/열 그리드 템플릿 설정
라인이름(옵션) 영역이름(필수) 트랙 크기(옵션) 라인이름(옵션)
그리드 행/열 템플릿을 축약형 속성으로 설정한 예
축약형으로 적용된 속성을 개별 속성으로 풀어본 예
행/열 그리드 템플릿에 영역이름 템플릿을 함께 설정 한 예
속기형으로 적용된 속성을 개별 속성으로 풀어본 예
grid-template-areas 속성은 암시적인 그리드 속성을 초기화하지 않습니다.
grid-auto-rows
grid-auto-columns
grid-auto-flow
grid 트랙 크기 자동 설정
그리드 행/열 트랙 크기 자동 설정
암시적인 그리드 행/열 트랙 크기를 자동으로 설정할 수 있습니다.
암시적인 그리드 트랙이란?
사용자가 설정하지 않은 임의의 트랙으로 사용자가 명시적으로 grid-template-rows / grid-template-columns 속성을 설정하지 않은 나머지 그리드 트랙을 가리킵니다.
grid-auto-columns / grid-auto-rows
암시적인(implicit grids) 열(track)/행(track)의 크기를 지정할 수 있습니다.
자동 생성된 그리드 트랙의 크기를 설정하며, 그리드에 셀보다 많은 그리드 항목이 있거나 그리드 항목이 명시적 그리드 외부에 배치되면 암시적 트랙이 생성됩니다.
<track-size> : 그리드에서 사용 가능한 단위 (px, rem, em, %, fr 등)
사용자가 명시적으로 열/행 템플릿 속성을 설정하면 그리드 트랙 크기로 적용(2열 2행 그리드)
개별 그리드 아이템에 열/행 위치를 그리드 라인 기준으로 배치하게 되면 다음과 같이 처리됨
.item-b에 설정한 열 그리드 라인 5~6 배치는 암시적인 열 그리드(grid-auto-columns) 설정에서 지정되지 않은 영역으로,
존재하지 않는 열/행에 배치하기 위해 암시적인 트랙이 자동으로 생성됩니다.
(그림을 자세히 보면 암시적으로 생성된 트랙 크기는 0으로 설정됩니다)
자동으로 생성되는 그리드 트랙 크기를 임의의 값으로 설정하고 싶다면 다음과 같이 설정할 수 있습니다.
암시적으로 생성된 그리드 트랙 크기는 60px로 설정됩니다.
grid 자동 흐름 설정
그리드에 명시적으로 배치(레이아웃)되지 않은 아이템이 있을 경우, 자동 배치 알고리즘이 실행되어 자동으로 배치되도록 설정할 수 있습니다.
속성 값에 따라 자동 배치 알고리즘 작동 방식이 달라집니다.
[속성 값에 따라 자동 배치 알고리즘 작동 방식]
grid-auto-flow
자동 배치 알고리즘 방식을 지정할 수 있습니다.
기본적으로 항목을 배치할 때 그리드에 간격이 생성되면 자동 배치된 그리드 항목이 간격을 채우지 않고 마지막 항목 뒤에 추가됩니다. dense 키워드를 사용하면 이를 변경할 수 있으며, 암시적 그리드 알고리즘이 자동 배치된 항목과의 간격을 채우고 필요할 때 항목의 순서를 변경하도록 합니다.
항목 순서가 중요하지 않은 이미지 갤러리를 만들 때 유용합니다.
row : 기본값으로 각 행을 차례로 채우고 필요에 따라 새 행을 추가하는 자동 배치 알고리즘입니다.
column : 각 열을 차례로 채우고 필요에 따라 새 열을 추가하는 자동 배치 알고리즘입니다.
dense : 배치 중 나중에 크기가 작은 아이템이 존재할 경우, 그리드 영역 앞부분의 남은 공간에 자동 배치하는 알고리즘입니다.