그리드 레이아웃 시스템 이해하기
minmax()의 활용
auto-fit, auto-fill
그리드 기법의 변화 예시
◆ (day14/grid)
■ CSS Grid
그리드 레이아웃은 격자 형태의 템플릿을 미리 설정하여,
하위 요소들이 이 템플릿에 맞춰 자유롭게 배치되도록 하는 레이아웃 기법이다
격자의 형태는 부모 요소에서 정의되며,
격자의 개수와 크기가 통합적으로 설정되어 모든 하위 요소에 일괄적으로 적용된다.
◎ 2차원 레이아웃: 행과 열을 모두 동기화 되어 있음.
◎ 격자 기반: 부모 요소에서 정의된 격자(행과 열) 위에 하위 요소 배치
◎ 자유도 높은 정렬 기능: 행/열 간격, 정렬 등을 간단하게 조정 가능
▷ 그리드 레이아웃의 주요 속성
- 그리드 컨테이너 속성
display: grid; - 그리드 컨테이너를 설정
grid-template-columns - 열의 개수와 너비를 정의
grid-template-rows - 행의 개수와 높이를 정의
grid-auto-flow - 그리드 아이템이 자동으로 배치되는 방식을 결정 (row, column 등).
gap - 그리드 셀 간의 간격을 설정 (예: row-gap, column-gap).
- 그리드 컨테이너 정렬 속성
justify-content - 그리드 아이템 집합의 수평 정렬 방식을 설정.
align-content - 그리드 아이템 집합의 수직 정렬 방식을 설정.
justify-items - 그리드 아이템의 수평 정렬 방식을 설정.
align-items - 그리드 아이템의 수직 정렬 방식을 설정.
- 그리드 아이템 속성
grid-column - 아이템이 차지할 열의 위치와 개수를 지정.
grid-row - 아이템이 차지할 행의 위치와 개수를 지정.
▼ 그리드 행과열의 초기값은 none 이다.
▼ 그리드의 width 개념(열)과 heigth 개념(행)의 초기값은 auto 이다.
▷ div가 추가가된다면 아무런 템플릿 행과 열이 지정된 것이 없기에 일반적으로 div 추가만 되어있는 것 을 볼 수있다.
▼ 한번 그리드의 시스템을 보기위해 열을 늘려보자면
▼ auto라는 개념 자체가 내부 콘텐츠 크기 만큼이다.
stretch 늘어나는 부분이 있기에 grow랑 곂치는 부분이 있다고 볼 수있다.
▼ 만약 auto를 또 추가하면 3열로 늘어난다
▼ 값을 auto 에서 fr단위로 적용해보면 stretch 없이 비율이 딱 맞게 적용 되는 것을 볼 수있다.
auto : column 기준에서 내부 콘텐츠 너비 + stretch (가득채움)
fr : 그리드 컨테이너 너비 기준에서 내부 컨텐츠 관계없이 비율로 측정한다.
▼ auto rows (행)의 크기를 적용하여 늘릴 수 있다.
▼ 만약 높이 크기를 400px 고정 값을 주면 하위에있는 모든 아이템들이 당연히 크기가 400px만큼 늘어나는데
flex 아이템 박스와 더불어서 그리드도 align-items가 존재한다고 볼 수 있다.
▼ justify-content는 그리드 쪽에서 justify-items라고 불린다.
부모관점의 strech - 가용공간이 늘어나있다
▼ 속성값을 stretch가아닌 center가 된다면 그리드 템플릿이 규정된바가 없으므로 가운데가 정렬이 된다
▷ grid-auto-columns: auto; width개념 (열) - 내부 콘텐츠 너비+정렬 justify-items에 의해 stretch 되는 값
▷ grid-auto-rows: auto; heigth 개념 (행) - 내부 콘텐츠 높이 + 정렬 justify-items에 의해 stretch 되는 값
▼ 12열을 넣고자할때 문법적으로 가능한 방법이 있다. (repeat)
▼ 요소가 5개 들어갈경우 auto-rows가 작동한다
▼ 그리드의 사이즈를 결정 짓는 속성들
▼ justify-content:normal은 flex박스에서 flex-start이고 그리드에서는 stretch이다
결국 본인이 직접 예시를 정해서 코드를 적용 해보는게 도움이 될 듯싶다.
■ 1차 정리
'BootCamp Review' 카테고리의 다른 글
2024.08.21 (Day 16) - HTML/CSS [grid 그리드 레이아웃 III] (0) | 2024.08.21 |
---|---|
2024.08.19, 20 (Day 14~15) - HTML/CSS [grid 그리드 레이아웃 II] (0) | 2024.08.20 |
2024.08.15,19 (Day 13~14) - HTML/CSS [INCREDIBLE] (0) | 2024.08.19 |
2024.08.13~14 (Day 11,12) - HTML/CSS [Position] (0) | 2024.08.18 |
2024.08.12 (Day 10) - HTML/CSS [Flexbox III] (0) | 2024.08.18 |