Flex와 Grid: 레이아웃에 최적화된 CSS 도구 비교

OlMinJe·2024년 2월 26일
0

zero-base

목록 보기
13/21
post-thumbnail

CSS 레이아웃 도구인 Flexbox와 CSS Grid는 웹 레이아웃을 구성하는데 사용하기 편한 도구로, 이 두 도구는 유사하게 보일 수 있지만, 각기 다른 상황에서 장점이 있습니다.

FlexBox

Flexbox는 주로 1차원 레이아웃을 디자인하는 데 사용됩니다. 즉, 행이나 열을 중심으로 디자인할 때 Flexbox를 사용하면 좋습니다.

Flexbox의 주요 장점 중 하나는 요소 간의 공간 배분과 정렬을 쉽게 할 수 있다는 것입니다. justify-content, align-items, align-self 등의 속성을 사용하면 요소를 원하는 대로 쉽게 배치할 수 있습니다.

또한, Flexbox는 콘텐츠 크기에 따라 자동으로 크기를 조절하는 기능이 있어 반응형 디자인을 구현하기에 적합합니다.

하지만, 복잡한 2차원 레이아웃을 구현하기에는 한계가 있습니다. 그래서 이런 경우에는 CSS Grid를 사용하는 것이 더 좋습니다.

<div class="flex-container">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
  <div class="flex-item">3</div>
</div>
.flex-container {
  display: flex;
  justify-content: space-around;
}

.flex-item {
  width: 100px;
  height: 100px;
  border: 1px solid black;
}

CSS Grid

CSS Grid는 2차원(행과 열 모두) 레이아웃을 생성하는 데 사용됩니다. 복잡한 레이아웃을 구현하거나, 격자 형태의 레이아웃을 만들 때 CSS Grid를 사용하면 효과적입니다.

CSS Grid는 레이아웃의 행과 열을 직접 정의하고, 각 요소를 원하는 셀에 배치할 수 있습니다. 이는 복잡한 레이아웃을 훨씬 쉽게 만들 수 있게 해줍니다.

그리드 템플릿을 사용하면 레이아웃을 미리 정의할 수 있으며, grid-template-rows, grid-template-columns, grid-template-areas 등의 속성을 통해 세밀한 제어가 가능합니다.

하지만, CSS Grid는 상대적으로 복잡하며, 배우기 어렵다는 단점이 있습니다. 또한, IE 등 일부 구형 브라우저에서는 완벽하게 지원되지 않을 수 있습니다.

<div class="grid-container">
  <div class="grid-item">1</div>
  <div class="grid-item">2</div>
  <div class="grid-item">3</div>
</div>
.grid-container {
  display: grid;
  grid-template-columns: auto auto auto;
  gap: 10px;
}

.grid-item {
  width: 100px;
  height: 100px;
  border: 1px solid black;
}
profile
໒꒰ྀ ˶ • ༝ •˶ ꒱ྀིა

0개의 댓글