<aside> <img src="/icons/calendar_gray.svg" alt="/icons/calendar_gray.svg" width="40px" />
2026.01.29
</aside>
Flexbox가 1차원(행 또는 열)이라면, Grid는 2차원(행과 열) 레이아웃
.container {
display: grid;
/* 열 정의 */
grid-template-columns: 200px 200px 200px; /* 3개 열 */
grid-template-columns: 1fr 1fr 1fr; /* 균등 분배 */
grid-template-columns: repeat(3, 1fr); /* 반복 */
grid-template-columns: 200px 1fr 200px; /* 혼합 */
/* 행 정의 */
grid-template-rows: 100px 200px;
/* 간격 */
gap: 20px;
column-gap: 10px;
row-gap: 20px;
}
.item {
/* 열 위치 */
grid-column: 1 / 3; /* 1~3 컬럼 차지 */
grid-column: span 2; /* 2칸 차지 */
/* 행 위치 */
grid-row: 1 / 3;
grid-row: span 2;
/* 축약형 */
grid-area: 1 / 1 / 3 / 3; /* row-start / col-start / row-end / col-end */
}
.container {
display: grid;
grid-template-areas:
"header header header"
"sidebar main main"
"footer footer footer";
grid-template-columns: 200px 1fr 1fr;
grid-template-rows: auto 1fr auto;
gap: 20px;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }
<div class="grid-container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
}
.item {
padding: 2rem;
background: #3498db;
color: white;
text-align: center;
border-radius: 8px;
}
화면 크기에 따라 다른 스타일 적용
/* 기본 스타일 (모바일) */
.container {
width: 100%;
padding: 1rem;
}
/* 태블릿 (768px 이상) */
@media (min-width: 768px) {
.container {
width: 750px;
margin: 0 auto;
}
}
/* 데스크톱 (1024px 이상) */
@media (min-width: 1024px) {
.container {
width: 1000px;
}
}
/* 큰 화면 (1200px 이상) */
@media (min-width: 1200px) {
.container {
width: 1170px;
}
}
/* 모바일 */
@media (max-width: 767px) { }
/* 태블릿 */
@media (min-width: 768px) and (max-width: 1023px) { }
/* 데스크톱 */
@media (min-width: 1024px) { }