여러 주요 영역으로 나누거나, 크기와 위치 및 문서 계층 구조의 관점에서 HTML 기본 요소로 작성된 콘트롤 간의 관계를 정의하는 데 아주 탁월합니다. 테이블과 마찬가지로 그리드 레이아웃은 세로 열과 가로 행을 기준으로 요소를 정렬할 수 있습니다.
.container {
display: grid;
display: inline-grid;
/* 요소는 inline으로 처리 되지만 안에 요소들은 grid로 처리*/
/* 바깥쪽, 내부 레이아웃을 동시에 정의 가능 */
}
.item {
/* 100px 50px 50px 로 3개의 열로 나누기 */
grid-template-columns: 100px 50px 50px;
/* 100px 100px 로 2개의 행으로 나누기 */
grid-template-rows: 100px 100px;
/* 비율로 나누기 (1:1:1) */
grid-template-columns: 1fr 1fr 1fr;
/* 위의 css와 동일한 효과 */
grid-template-columns: repeat(3, 1fr);
}
.item__header {
grid-area: hd;
}
.item__main {
grid-area: ma;
}
.item__sidebar {
grid-area: sb;
}
.item__footer {
grid-area: ft;
}
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 1fr);
grid-template-areas:
"hd hd hd hd hd"
"ma ma ma sb sb"
"ft ft ft ft ft";
}
.container {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(4, 1fr);
row-gap:20px;
column-gap: 10px;
gap: 20px 10px; /* 앞쪽이 row 뒤쪽이 column gap*/
}
.container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 1fr;
grid-auto-columns: 100px;
}
grid-auto-flow : row /* 기본값 */
grid-auto-flow : column
grid-auto-flow : dense
grid 속성은 shorthand property 입니다.
외재적인 속성인 grid-template-rows, grid-template-columns , grid-template-areas 값과 내재적인 속성인 grid-auto-rows , grid-auto-columns, grid-auto-flow 값을 한번에 설정합니다.
/* /를 기준으로 앞쪽이 row 뒤쪽이 column */
.container {
grid-template-rows: 1fr 2fr;
grid-template-columns: 200px 100px;
grid:1fr 2fr / 200px 100px; /* 위 2개 선언을 단축속성으로 선언*/
}
✔ 그리드 아이템 트랙을 정렬
✔ 그리드 아이템 내부 콘텐츠를 정렬
✔ item을 개별적으로 정렬하는 방법
.item:first-child {
grid-row-start: 3;
grid-row-end: 4;
grid-column-start: 2;
grid-column-end: 3;
/* 위 4개의 식을 단축속성으로 표현 */
grid-row: 3 / 4;
grid-column: 2 / 3;
}
.item-d {
grid-area: 1 / col4-start / last-line / 6;
}
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, minmax(50px, auto));
}
.item:nth-child(1) {
/* 그리드 아이템 순서 설정 (자동 배치 내) */
order: 2;
}
✔ 0이 기본값 , interger 값
✔ 작을 수록 우선순위가 큼, 같으면 코드순서대로 우선순위가 큼
.grid {
display: grid;
grid-gap: 10px;
grid-auto-rows:100px;
margin-bottom: 30px;
}
.grid:first-child{
grid-template-columns: repeat(5, minmax(auto-fill, 1fr));
}
.grid:nth-child(2){
grid-template-columns: repeat(5, minmax(auto-fit, 1fr));
}
auto-fill은 가능한 범위 안에서 가능한 많은 column을 만들어 준다.
auto-fit 은 가지고 있는 element를 늘여서 주어진 자리에 딱 맞춘다.