CSS GRID 란?
- CSS Grid는 2차원 레이아웃을 구축하기 위한 CSS 속성 집합입니다.
- CSS Grid의 주요 아이디어는 컨테이너 요소를 행과 열로 나누어 자식 요소로 채울 수 있게 하는 것입니다.
- 2차원 컨텍스트에서 CSS Grid를 사용하면 덜 중첩된 HTML과 더 읽기 쉬운 CSS를 작성할 수 있습니다.
- CSS Grid는 flexbox를 대체하기 위한 것이 아닙니다.
1차원 레이아웃은 flexbox, 2차원 레이아웃은 CSS Grid를 사용하면 됩니다.
Flex 와 마찬가지로 부모 태그가 container (바탕화면 또는 바닥) 역할을 하고
자식 태그들이 items 가 되어 gird 안에 배치되게 됩니다.
container 와 items 들은 각기 다른 속성들을 가지고 있습니다.
1. Grid 컨테이너 속성
- display: grid
grid (기본값): 블록 레벨 그리드 컨테이너를 생성합니다. - grid-template-columns: <track-size> ... | <repeat()>
- grid-template-rows: <track-size> ... | <repeat()>
그리드의 열과 행의 크기를 정의합니다.
<track-size>: 길이, 퍼센트, 또는 fr 단위 사용 가능
(예: 4개의 행 또는 열을 주고 싶다면 1fr 1fr 1fr 1fr 4개의 사이즈를 주면 된다
혹은 repeat(4, 1fr) 이렇게 ..)
<repeat()>: 반복되는 값을 간단히 표현 (예: repeat(3, 1fr)) - gap : 0 | <length> (상하좌우 모든 방향의 공백)
- row-gap : 0 | <length> (수평 공백)
- column-gap: 0 | <length> ( 수직 공백)
그리드 셀 사이의 간격을 설정합니다.
(flex 와 마찬가지로 margin 으론 공백을 줄 수 없습니다. 이 속성을 사용해야 합니다.) - justify-content: start (기본값) | end | center | stretch | space-around | space-between | space-evenly ( 수평 )
- align-content: start (기본값) | end | center | stretch | space-around | space-between | space-evenly ( 수직 )
그리드 전체를 컨테이너 내에서 정렬합니다. - justify-items: stretch (기본값) | start | center | end
모든 그리드 아이템을 가로 축(행 축)을 따라 정렬합니다.
- stretch: 셀의 너비를 채우도록 아이템을 늘립니다.
- start: 셀의 시작점에 아이템을 정렬합니다.
- center: 셀의 중앙에 아이템을 정렬합니다.
end: 셀의 끝점에 아이템을 정렬합니다.
- align-items: stretch (기본값) | start | center | end
모든 그리드 아이템을 세로 축(열 축)을 따라 정렬합니다.
- stretch: 셀의 높이를 채우도록 아이템을 늘립니다.
- start: 셀의 상단에 아이템을 정렬합니다.
- center: 셀의 중앙에 아이템을 정렬합니다.
- end: 셀의 하단에 아이템을 정렬합니다.
2. Grid 아이템 속성
- grid-column: <start-line> / <end-line> (기본값) | span <number>
- grid-row: <start-line> / <end-line> (기본값) | span <number>
아이템의 열과 행 위치를 지정합니다.
위치 이동이나 병합 시, 사용합니다.
<start-line>과 <end-line>: 그리드 라인 번호
span <number>: 차지할 트랙의 수 - justify-self: stretch (기본값) | start | center | end
- align-self: stretch (기본값) | start | center | end
개별 아이템을 셀 내에서 정렬합니다.
justify-items와 align-items를 개별 아이템에 대해 오버라이드합니다. - grid-area: <name> | <row-start> / <column-start> / <row-end> / <column-end>
아이템의 위치와 크기를 한 번에 지정합니다.
<name>: grid-template-areas로 정의된 영역 이름
숫자: 그리드 라인 번호
그리드 라인번호란 아래 각 item 들 사이의 빨간 네모 숫자를 지칭합니다.
예를 들어 7번의 위치를 2번으로 이동시키고 싶다면
<style>
.el--8 {
grid-column: 2 / 3; 2번과 3번 라인이란 위 사진의 빨간 네모 번호 사이의 위치를 말한다
grid-row: 1 /2;
}
/* start line 과 end line이 1차이라면 end line 값 생략이 가능합니다*/
.el--8 {
grid-column: 2;
grid-row: 1;
}
</ style>
그리고 end line 번호를 늘려주면 각 해당하는 위치까지 길이가 늘어나게 됩니다
<style>
.el--8 {
grid-column: 2 / 4;
grid-column: 2 / span 2 (이렇게 적어도 동일한 작동을 한다. 2칸을 쓰겠다는 뜻);
grid-column: 2 / -2 (뒤에서 부터 2번째 라인);
/*위 세개의 표현방식은 완전히 동일한 결과를 나타냅니다*/
/* 전체 row 를 다 차지하고 싶다면..
grid-column: 1 / -1 */
grid-row: 1 /2;
}
</ style>
'CSS' 카테고리의 다른 글
[CSS] 5-1. FlexBox layout (0) | 2024.10.10 |
---|---|
[CSS] ::before 에서 각자 다른 content text 를 주는 법 (content: attr( ) ) (0) | 2024.10.10 |
[CSS] 블록 서식 문맥이란 ? ( Block Formatting Context, BFC ) (0) | 2024.10.02 |
[CSS] 4. 포지셔닝 ( position , float, clear) 과 float layout (0) | 2024.10.01 |
[CSS] 3. 레이아웃 스타일 - 인라인, 블록, 인라인블록 (0) | 2024.09.26 |