CSS에서 레이아웃을 구성할 때, 우리는 주로 두 가지 강력한 도구를 사용한다. CSS Grid와 Flextbox 이 두 가지는 모두 레이아웃을 구성하는 데 매우 유용하지만, 각각의 사용 목적과 상황이 다르다.
CSS Grid는 다음과 같은 경우에 적합하다:
<div class="grid-container">
<div class="grid-item">1</div>
<div class="grid-item">2</div>
<div class="grid-item">3</div>
<div class="grid-item">4</div>
<div class="grid-item">5</div>
<div class="grid-item">6</div>
</div>
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
}
.grid-item {
background-color: #4caf50;
padding: 20px;
text-align: center;
color: white;
font-size: 1.5em;
}

이 예제에서는 3열 그리드를 사용하여 6개의 아이템을 배치했다. grid-template-columns를 사용하여 열의 개수와 크기를 설정하고, gap 속성으로 아이템 간의 간격을 지정했다.
Flexbox는 다음고 같은 경우에 적합하다:
<div class="flex-container">
<button class="btn">Button 1</button>
<button class="btn">Button 2</button>
<button class="btn">Button 3</button>
</div>
.flex-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.btn {
padding: 10px 20px;
margin: 5px;
background-color: #2196f3;
color: white;
border: none;
cursor: pointer;
font-size: 1em;
}

이 예제에서는 Flexbox를 사용하여 버튼들을 화면 중앙에 정렬했다. justify-content: center와 align-item: center 속성을 통해 수평 및 수직 방향으로 중앙 정렬을 쉽게 구현할 수 있다.
때로는 CSS Grid와 Flexbox를 결합하여 사용하는 것이 가장 효과적일 수 있다. 예를 들어, 전체 페이지 레이아웃을 Grid로 구성한 다음, 세부적인 아이템 정렬에 Flexbox를 사용할 수 있다.
<div class="grid-layout">
<header class="header">Header</header>
<nav class="sidebar">Sidebar</nav>
<main class="content">
<div class="content-item">Content 1</div>
<div class="content-item">Content 2</div>
<div class="content-item">Content 3</div>
</main>
<footer class="footer">Footer</footer>
</div>
.grid-layout {
display: grid;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
grid-template-columns: 200px 1fr;
grid-template-rows: auto 1fr auto;
height: 100vh;
}
.header {
grid-area: header;
background-color: #4caf50;
color: white;
padding: 20px;
text-align: center;
}
.sidebar {
grid-area: sidebar;
background-color: #2196f3;
color: white;
padding: 20px;
}
.content {
grid-area: content;
display: flex;
flex-direction: column;
padding: 20px;
}
.content-item {
background-color: #f44336;
color: white;
padding: 20px;
margin: 10px 0;
}
.footer {
grid-area: footer;
background-color: #555;
color: white;
text-align: center;
padding: 10px;
}

이 예제에서는 전체 레이아웃을 Grid로 구성하고, content 영역 내의 아이템들을 Flexbox로 정렬했다. Grid는 페이지의 큰 구조를 관리하고, Flexbox는 세부적인 아이템 배치를 담당한다.
돌아와라 west-0-진!!