부모요소에게 display: grid;
적용
grid-container
grid-item
display: grid;
grid-template-columns: 1fr 1fr 1fr;
세로칸 갯수 & 사이즈grid-template-rows: 100px 100px;
가로칸 갯수 & 사이즈grid-auto-flow:dense;
빈공간을채움<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
border을 준 결과 👉
Grid 내부의 셀의 길이를 지정할 때 repeat() 함수를 사용
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
}
4개의 같은 길이를 가진 열을 만들고 싶다면 위와 같이 써주면 된다.
위와 같이 작성하게 되면 1fr의 길이는 설정된 전체 너비가 줄어들면 같이 줄어들게 된다.
이때 최소 길이를 지정해 줄 수 있는 함수가 minmax() 함수이다.
.grid {
display: grid;
grid-template-columns: repeat( 4, minmax(250px, 1fr) );
}
위와 같이 작성하면 설정된 전체 너비가 줄어들더라도 셀의 너비가 250px 이하로는 작아지지 않는다.
또한, minmax( ) 는 반응형웹에서 auto-fit과 함께 자주쓰인다.
grid-auto-rows
를 덧붙여주면 일정한 높이를 유지한채 반응형 웹을 만들수있다.
참고: https://www.youtube.com/watch?v=Pk87sPNas5c&t=345s
auto-fill과 auto-fit은 위에서 설명한 repeat() 함수와 함께 사용된다.
repeat()함수의 파라미터로 열 또는 행의 개수를 미리 지정해 주지 않고, 설정된 너비가 허용하는 한 최대한 셀을 채우게 된다.
HTML
<body>
auto-fill
<div class="grid">
<div class="boxes">1</div>
<div class="boxes">2</div>
<div class="boxes">3</div>
<div class="boxes">4</div>
<div class="boxes">5</div>
</div>
auto-fit
<div class="grid">
<div class="boxes">1</div>
<div class="boxes">2</div>
<div class="boxes">3</div>
<div class="boxes">4</div>
<div class="boxes">5</div>
</div>
</body>
CSS
.grid {
display: grid;
grid-gap: 10px;
grid-auto-rows: 100px;
margin-bottom: 30px;
}
.grid:first-child {
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}
.grid:last-child {
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
}
body > div > div:nth-child(odd) {
background-color: forestgreen;
}
body > div > div:nth-child(even) {
background-color: pink;
}
실행결과:
그리드 컨테이너의 너비가 좁을 경우 auto-fill과 auto-fit이 차이가 없는것처럼 보인다. 그러나 그리드 컨테이너의 너비를 넓혀주면 둘의 차이가 드러난다.
auto-fit은 컨테이너 내부에 공간이 남을 경우, 그 공간을 각 셀들이 나눠 갖는다.
반면 auto-fill은 아무것도 하지 않는것 처럼 보인다.
사실 auto-fill은 보이지 않는 셀들을 만들어 내고 있었다.
셀을 구성하고 남는 공간이 존재할 때 둘의 차이가 드러나게 된다.
auto-fill은 설정된 너비에서 가능한 많은 셀들을 만들어 내려고 한다.
겉으로 보기에는 빈 공간이 있더라도 셀의 길이를 늘리지 않는다.
auto-fit은 빈 공간을 셀들이 나누어 가져서 딱 맞게 길이를 설정한다.
겉으로 보기에는 셀의 길이를 전체 너비에 맞게 늘린다.
stretch
, start
, end
, center
, space-between
, space-around
, space-evenly
stretch
, center
, start
, end
stretch
, center
, start
, end
grid-column : 1 / 4;
는 grid-column : 1/ span 3;
이랑 똑같다. 세칸을 더 가라는 의미로 span 3grid-column : 1 / 5;
도 되지만 grid-column: 1 / -1;
도 가능하다 !-1
= 끝까지grid-column: auto / span 2;
auto= 너 자리👀 더 직관적이다! 색칠공부처럼 🎨
grid-area
로 이름을 준 후grid-template-areas
를 이용해 색칠공부를 해준다빈공간으로 하고싶으면 .
을 기입.
<!--참고; div 두개여도됨 -->