grid 레이아웃
CSS 레이아웃의 흐름 : Float > Flex > Grid
grid 레이아웃 시스템의 구조
flex는 1차원적 배열 구조 : row, column 방향 택 1
flex를 여러번 중첩시켜서 사용하여 구조를 짠다.
grid는 2차원적 배열 구조 : row와 column 레이아웃 동시 설정 가능
grid 속성
- 요소의 속성을 grid로 변경
grid-line, grid-number - grid-template-rows
grid의 행의 개수 및 크기를 지정할 수 있다.
grid-template-rows : 1fr 2ft 200px - grid-template-columns
grid의 열의 개수 및 크기를 지정할 수 있다.- fr : fraction(분수)의 약자, grid-template에서 사용할 수 있는 비율 단위
- repeat(a, b) : grid-template에서 사용할 수 있는 반복 함수, b 규격의 grid-template을 a개 생성한다.
grid-template-columns : repeat(4, 1fr) = grid-template-columns : 1fr 1fr 1fr 1fr
grid-template-rows : repeat(2, 1fr 200px) = grid-template-rows : 1fr 200px 1fr 200px
grid-template-rows : 3fr repeat(2, 1fr 200px) = grid-template-rows : 3fr 1fr 200px 1fr 200px
- grid-column / grid-row
grid-item이 얼마만큼의 영역을 차지할 지 정의한다.
grid-column: 1/3
grid-column은 grid-line의 번호, grid-row는 grid-number의 번호를 기준으로 영역을 할당한다.
Flex vs Grid
Flex
- 비교적 작은 단위의 레이아웃 구성에 적합
- 작업 유동성이 높기 때문에, 디자인이나 기획이 확실하게 잡히지 않아 변경 가능성이 있는 경우에 적합
Grid
- 큰 규모의 레이아웃 구성에 적합
- 레이아웃 구조가 확실하게 잡혀있는 경우, 효율적으로 반응형 디자인을 구현할 수 있음
- ⭐️ 단, 그리드는 상대적으로 최신 기술이기 때문에 모든 브라우저에서 지원하지 않음!⭐️