Flex(플렉스)가 1차원을 위한 레이아웃 시스템이라면 Grid(그리드)는 2차원(행과 열)을 위한 레이아웃 시스템입니다.
display: grid;
를 설정해줌으로써 컨테이너 내부를 그리드 영역으로 설정해줄 수 있습니다.<div class="container">
<div class="item">A</div>
<div class="item">B</div>
<div class="item">C</div>
<div class="item">D</div>
<div class="item">E</div>
<div class="item">F</div>
<div class="item">G</div>
<div class="item">H</div>
<div class="item">I</div>
</div>
.container {
display: grid;
}
.container {
grid-template-rows: 200px 200px 500px;
/* grid-template-rows: 1fr 1fr 1fr */
/* grid-template-rows: repeat(3, 1fr) */
/* grid-template-rows: 200px 1fr */
/* grid-template-rows: 100px 200px auto */
}
.container {
grid-template-columns: 200px 200px 500px;
/* grid-template-columns: 1fr 1fr 1fr */
/* grid-template-columns: repeat(3, 1fr) */
/* grid-template-columns: 200px 1fr */
/* grid-template-columns: 100px 200px auto */
}
<div class="container">
<div class="item">Item<br>Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
</div>
.container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 1fr;
}
row / column속성
의 형태로 표시합니다.content는 아이템의 구역을 정렬하기 위해 사용하는 속성이라면, items는 아이템 내부의 공간을 정렬하기 위해 사용하는 속성입니다.
span 3
으로 몇칸을 점유할지 설정해줄 수 있습니다.fr은 사용 가능한 공간에 대한 비율을 의미합니다.
그리드 컨테이너 내의 공간 비율을 분수(fraction)로 나타냅니다.
.grid {
display: grid;
/* 1ft은 남는 공간의 1/3을 의미합니다. */
grid-template-columns: auto 100px 1fr 2fr;
}
그리드 아이템이 포함하는 컨텐츠의 최소(최대) 크기를 의미합니다.
auto-fill, auto-fit은 row와 column의 개수를 Container 및 크기에 맞게 자동으로 조절해주는 속성입니다.
auto-fill, auto-fit의 차이점은 row, column에 모든 아이템을 수용하고 남는 공간이 생길 때 발생합니다. auto-fill은 남는 공간을 그대로 유지하고 auto-fit은 남는 공간을 축소해줍니다.