Flexbox란
웹 디자인 레이아웃을 간단하고 효율적으로 만들 수 있게 해주는 css3의 레이아웃 모델이다. flex container와 flex item으로 구성된 flexbox는 복잡한 레이아웃 문제를 해결하는데 유용하다.
쉽게 말해 flex item들을 flex container에 담아 레이아웃을 편리하게 도와주는 기술이다. 어떤식으로 사용되는 지는 속성을 살펴보면서 설명하도록 하겠다.
flex 테스트
아래의 코드펜은 " by Gabi (@enxaneta) on CodePen."이 만드신 코드펜인데 프럭스의 개념을 잘담고 있어 실습용으로 링크를 첨부했습니다. (코드펜의 저작권은 코드펜 규정상 출처를 함께 표기하면 사용이 가능하니 참고 바랍니다.)
See the Pen Flexbox playground by Gabi (@enxaneta) on CodePen.
Flex container의 속성
flex container에서 사용되는 속성은 아래와 같으며 하나씩 살펴보도록 하겠다.
- display - flex 컨테이너를 설정하는 속성
- flex-direction - flex 아이템들의 방향을 결정하는 속성
- flex-wrap - flex 아이템들이 컨테이너의 크기를 넘어설 경우 줄바꿈을 할지 결정하는 속성
- flex-flow - flex-direction과 flex-wrap을 동시에 설정하는 서식
- justify-content - flex 아이템들의 가로축 정렬을 결정하는 속성
- align-content - flex 아이템들의 세로축을 하나로 본 정렬
- align-items - flex 아이템들의 세로축을 다중으로 본 정렬
display
flex 컨테이너를 설정하는 속성
<!-- flex 컨테이너 생성 -->
<!-- css -->
.container {
display: flex;
width: 400px;
height: 100px;
border: 1px solid black;
}
.item {
width: 60px;
height: 60px;
background-color: aqua;
border: 1px solid black;
}
<!-- html -->
<div class="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>
flex-direction
flex 아이템의 방향을 결정(아래 이미지는 flex-wrap: wrap으로 해놓은 상태)
- row - 왼쪽부터 순서대로 가로축 정렬
- row-reverse - 오른쪽 끝부터 순서대로 정렬
- column - 왼쪽 위에서 부터 아래로 정렬
- column - 왼쪽 아래에서 위로 정렬
flex-wrap
flex 아이템들이 컨테이너의 크기를 넘어설 경우 줄바꿈을 할지 결정하는 속성
- wrap : 아이템이 넘어갈때에 맞춰 줄바꿈을 진행
- nowrap : 줄바꿈을 하지 않고 아이템의 가로폭을 축소
- wrap-reverse : 왼쪽 아래부터 오른쪽으로 정렬
justify-content
flex 아이템들의 가로축 정렬을 결정하는 속성. justify-content는 워낙 다양하므로 필요할때 찾아보기를 권장하며 여기서는 개념 이해에 초점을 두고 일부만 사용해보겠다.
(참고 https://developer.mozilla.org/ko/docs/Web/CSS/justify-content )
- start : 가로축의 시작점에 정렬
- center : 가로축의 중앙에 정렬
- space-evenly : 아이템 가로축 사이의 공백을 고르게 정렬
align-content
flex 아이템들의 가로축 정렬을 결정하는 속성. 가로축 정렬도 속성값이 다양하여 추가적으로 궁금한 값은 아래의 링크를 참고하면 된다.
(참고 https://developer.mozilla.org/en-US/docs/Web/CSS/align-content)
- start : 가로축의 시작점에 정렬
- center : 가로축의 중앙에 정렬
- space-around : 아이템 가로축 사이의 공백을 고르게 정렬(align-items : center와 유사)
align-items
flex 아이템들의 가로축을 다중으로 본 정렬
- start : 가로축의 시작점에 정렬
- center : 가로축의 중앙에 정렬
- end : 가로축의 아래에 정렬