CSS - Flexbox: 초보자를 위한 유연한 상자 레이아웃 가이드
안녕하세요, 미래의 CSS 마스터 여러분! CSS Flexbox의 세계로 인도해드리게 되어 매우 기쁩니다. 컴퓨터 과학을 오래 가르쳐온 사람으로서, Flexbox는 웹 디자인 생활을 훨씬 쉽게 만들어줄 게임 체인저 중 하나라고 말씀드릴 수 있습니다. 그럼, 시작해봅시다!
CSS Flexbox는 무엇인가요?
방 안에 가구를 배치하는 것을 상상해보세요. 모든 것이 완벽하게 맞아야 하지만, 쉽게 이동할 수 있는 유연성도 원합니다. CSS Flexbox는 웹 레이아웃에 대해 정확히 그렇게 작동합니다!浮动 또는 위치 지정을 사용하지 않고 유연한 응답형 레이아웃 구조를 설계할 수 있는 레이아웃 모델입니다.
Flexbox는 다음과 같은 작업을 쉽게 할 수 있게 합니다:
- 수직 및 수평으로 아이템을 정렬합니다.
- HTML을 변경하지 않고 아이템을 재정렬할 수 있습니다.
- 유연한 컨테이너 요소를 생성합니다.
Flexbox의 요소
코딩을 시작하기 전에 Flexbox의 두 가지 주요 구성 요소를 이해해 보겠습니다:
- Flex Container: 모든 flex 아이템을 포함하는 부모 요소입니다.
- Flex Items: Flex 컨테이너 내에 있는 자식 요소들입니다.
이를 상자(컨테이너)와 상자 안의 장난감(아이템)으로 생각해보세요. 이 장난감을 어떻게 배치할지는 Flexbox 속성을 어떻게 설정하는지에 따라 달라집니다.
기본 Flexbox 레이아웃
간단한 예제를 시작해보겠습니다:
<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;
}
.flex-item {
padding: 20px;
background-color: #f1f1f1;
margin: 10px;
}
이 예제에서 우리는 세 개의 flex 아이템을 포함하는 flex 컨테이너를 생성했습니다. 컨테이너에 display: flex;
속성을 적용하는 것이 Flexbox를 활성화합니다.
수직 Flexbox 레이아웃
아이템을 수직으로 쌓고 싶으신가요? 그렇다면 간단합니다!
.flex-container {
display: flex;
flex-direction: column;
}
이 flex-direction: column;
속성은 주축을 수직으로 변경하여 아이템을 상단에서 하단으로 쌓습니다.
Flexbox 정리 콘텐츠 속성
이제 위치에 대해 이야기해보겠습니다. justify-content
속성은 아이템을 수평으로 정렬하고 다음 값을 받아들입니다:
값 | 설명 |
---|---|
flex-start | 아이템은 flex-direction의 시작 쪽으로 모이게 됩니다 |
flex-end | 아이템은 flex-direction의 끝 쪽으로 모이게 됩니다 |
center | 아이템은 줄에 중앙에 정렬됩니다 |
space-between | 아이템은 줄에 균일하게 분포됩니다 |
space-around | 아이템은 균일하게 분포되며 각각의 주위에 공간이 있습니다 |
.flex-container {
display: flex;
justify-content: space-between;
}
이렇게 하면 아이템을 컨테이너에 균일하게 퍼뜨립니다.
Flexbox 정렬 아이템 속성
justify-content
은 주축에 따라 작동하지만, align-items
는 교차축에 따라 작동합니다. 다음 값을 받아들입니다:
값 | 설명 |
---|---|
stretch | 아이템은 컨테이너에 맞게 확장됩니다 (기본값) |
flex-start | 아이템은 교차축의 시작 쪽에 배치됩니다 |
flex-end | 아이템은 교차축의 끝 쪽에 배치됩니다 |
center | 아이템은 교차축에서 중앙에 정렬됩니다 |
baseline | 아이템은 기준선이 맞춰지도록 정렬됩니다 |
.flex-container {
display: flex;
align-items: center;
}
이렇게 하면 모든 아이템을 컨테이너 내에서 수직으로 중앙 정렬합니다.
Div를 Flexbox를 사용하여 중앙 정렬
여기서 하나의 훌륭한 트릭을 소개합니다: Div를 수평 및 수직으로 중앙 정렬하는 것은 Flexbox로 매우 쉽습니다!
.flex-container {
display: flex;
justify-content: center;
align-items: center;
height: 300px; /* 또는 임의의 높이 */
}
Flexbox Wrap 속성
occasionally, you might want your items to wrap to the next line if they don't fit. That's where flex-wrap
comes in:
.flex-container {
display: flex;
flex-wrap: wrap;
}
This allows items to wrap to the next line if there's not enough space.
Flexbox Align Self Property
What if you want to align just one item differently? align-self
to the rescue!
.flex-item:nth-child(2) {
align-self: flex-end;
}
This aligns the second item to the bottom of the container, regardless of the other items.
CSS Flexbox Container Properties
Here's a table of all the Flexbox properties you can apply to the container:
Property | Description |
---|---|
display | Defines a flex container |
flex-direction | Defines the direction of flex items |
flex-wrap | Specifies whether flex items should wrap |
flex-flow | Shorthand for flex-direction and flex-wrap |
justify-content | Aligns flex items along the main axis |
align-items | Aligns flex items along the cross axis |
align-content | Aligns flex lines when there's extra space in the container |
CSS Flexbox Items Properties
And here are the properties you can apply to flex items:
Property | Description |
---|---|
order | Specifies the order of a flex item |
flex-grow | Specifies how much a flex item will grow relative to the rest |
flex-shrink | Specifies how much a flex item will shrink relative to the rest |
flex-basis | Specifies the initial length of a flex item |
flex | Shorthand for flex-grow, flex-shrink and flex-basis |
align-self | Specifies the alignment for a specific flex item |
And there you have it! You've just taken your first big step into the world of CSS Flexbox. Remember, like learning to ride a bike, it might feel a bit wobbly at first, but with practice, you'll be zooming along in no time.
Don't be afraid to experiment with these properties. The best way to learn is by doing. Try creating different layouts, play around with the properties, and see what happens. Before you know it, you'll be crafting beautiful, flexible layouts with ease!
Happy flexing, future CSS maestros!
Credits: Image by storyset