Frontend/CSS

Flexbox 실습: 정렬과 간격 다루기

sliver__ 2025. 5. 3. 08:25
728x90

안녕하세요! 이번 포스팅에서는 Flexbox를 실습하며 아이템 정렬과 간격 주는 방법을 좀 더 깊이 배워보겠습니다. 


1. 기본 정렬 복습

  • justify-content: 주 축(main axis, 기본 가로) 방향 정렬
    • center → 가로 중앙
    • flex-start → 왼쪽 정렬 (기본값)
    • space-between 등 다양한 옵션 존재
  • align-items: 교차 축(cross axis, 기본 세로) 방향 정렬
    • center → 세로 중앙
    • flex-start → 위쪽 정렬
    • stretch → 컨테이너 높이에 맞춰 늘이기 (기본값)
.container {
  display: flex;
  justify-content: flex-start;  /* 수평 정렬 */
  align-items: center;          /* 수직 중앙 정렬 */
}

2. 개별 아이템 정렬: align-self

컨테이너에 설정한 align-items를 한 개의 아이템만 다르게 적용하고 싶다면:

.item-1 {
  align-self: flex-start;  /* 이 요소만 위쪽 정렬 */
}
.item-5 {
  align-self: stretch;     /* 이 요소만 컨테이너 높이에 맞춰 늘리기 */
}
  • 가능한 값: auto(기본), flex-start, flex-end, center, stretch

3. 순서 바꾸기: order

반응형 레이아웃에서 HTML 순서를 바꾸지 않고 화면 상 표시 순서만 변경할 때 유용합니다.

  • 기본값은 0
  • 작은 값일수록 앞쪽, 큰 값일수록 뒤쪽에 렌더링
.item-6 {
  order: -1;  /* 맨 앞에 표시 */
}
.item-3 {
  order: 2;   /* 맨 뒤에 표시 */
}

4. 간격 다루기: Margin vs Gap

4-1. 예전 방식: Margin 이용하기

.container > * {
  margin-right: 30px;
}
/* 마지막 요소에서 margin 제거해야 함 */
  • 번거롭게 마지막 요소만 따로 처리해야 함

4-2. 최신 방식: gap 속성

.container {
  display: flex;
  gap: 30px;  /* Flex 아이템 간격을 한 번에 설정 */
}
  • 컨테이너에만 선언하면 끝
  • 마지막 요소 처리 불필요

마치며

지금까지 Flexbox에서 컨테이너 정렬(justify-content, align-items), 아이템별 정렬(align-self), 순서(order), 그리고 간격(gap) 주는 방법을 실습해보았습니다.
다음에 Flexbox의 핵심인 flex 단축 속성(flex-grow, flex-shrink, flex-basis)을 직접 코드로 다뤄보며 더 복잡한 레이아웃을 구현해볼 예정이니, 기대해 주세요!

즐거운 코딩 되세요~ 🚀

728x90