정의 및 사용 방법
flex-flow 속성은 flex-direction과 flex-wrap 속성을 한 번에 지정할 수 있는 단축 속성(shorthand property)입니다.
flex-direction속성은 플렉스 컨테이너의 주축(main axis) 방향을 설정하여,
플렉스 아이템이 컨테이너 안에서 배치되는 흐름 방향을 결정합니다.flex-wrap속성은 플렉스 아이템이 한 줄에 유지될지 또는 여러 줄로 나뉠지를 설정합니다.
여러 줄일 경우 줄이 쌓이는 방향도 함께 설정할 수 있습니다.
flex-flow 속성을 사용하면 플렉스 흐름(flex flow)과 관련된 이 두 속성을 한 번에 지정할 수 있어서 편리합니다.
기본 예제
flex-direction과 flex-wrap 속성을 한 번에 지정할 수 있습니다.
Item-1
Item-2
Item-3
Item-4
Item-5
Item-6
<div class="flex-container">
<div class="item">Item-1</div>
<div class="item">Item-2</div>
<div class="item">Item-3</div>
<div class="item">Item-4</div>
<div class="item">Item-5</div>
<div class="item">Item-6</div>
</div>
.flex-container {
display: flex; /* 플렉스 컨테이너 생성 */
padding: 10px;
border: 2px solid silver;
flex-flow: /* value <= 라이브 데모에서 동적으로 구현 */
}
.item { /* 플렉스 아이템 */
border: 4px solid blue;
background-color: yellow;
}
/*
* 일부 스타일 코드는 가독성을 위해 생략했습니다!
*/
특징
형식 구문
selector {
flex-flow: <'flex-direction'> || <'flex-wrap'>
}
구문
/*
* flex-flow 속성 값
* 아래에 나열된 값 중 하나 또는, 둘을 사용하여 지정할 수 있습니다.
* 값의 순서는 중요하지 않습니다. 순서는 영향을 주지 않습니다.
*/
/* <'flex-direction'> */
flex-flow: row;
flex-flow: row-reverse;
flex-flow: column;
flex-flow: column-reverse;
/* <flex-wrap> */
flex-flow: nowrap;
flex-flow: wrap;
flex-flow: wrap-reverse;
/* <'flex-direction'>과 <'flex-wrap'> */
flex-flow: row nowrap; /* 'flex-flow: nowrap row;'와 동일 */
flex-flow: row wrap; /* 'flex-flow: wrap row;'와 동일 */
flex-flow: column nowrap; /* 'flex-flow: nowrap column;'과 동일 */
flex-flow: column-reverse wrap-reverse; /* 'flex-flow: wrap-reverse column-reverse;'와 동일 */
/* 글로벌 값 */
flex-flow: inherit;
flex-flow: initial;
flex-flow: revert;
flex-flow: revert-layer;
flex-flow: unset;
값
값에 대한 자세한 내용은 flex-direction 및 flex-wrap 속성의 값을 참조하세요.
형식 정의
| 초깃값 | row nowrap
구성 속성의 초깃값은 다음과 같습니다.
|
|---|---|
| 적용 요소 | 플렉스 컨테이너 |
| 상속 | 아니오 |
| 애니메이션 | 아니오 |
활용 예제
flex-flow 속성은 화면의 폭이 넓은 데스크톱에서는 아이템을 가로로 배치하고, 폭이 좁은 모바일에서는 세로로 배치하는 반응형 웹 디자인을 구현할 때 매우 쉽고 유용합니다.
다음은 반응형 웹 디자인에 적용한 flex-flow 속성의 사용 예제입니다.
<div class="flex-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 class="item">6번 아이템</div>
</div>
.flex-container {
display: flex; /* 플렉스 컨테이너 생성 */
gap: 10px; /* 플렉스 아이템 간격 설정 */
padding: 10px;
border: 2px solid #333;
flex-flow: row wrap; /* 데스크톱 디자인에 적용 */
}
.item {
background-color: #4CAF50;
color: white;
padding: 15px;
box-sizing: border-box; /* 패딩과 테두리를 너비에 포함 */
flex: 0 0 calc((100% - 20px) / 3); /* calc((100% - (간격개수 * gap)) / 아이템개수) */
text-align: center;
}
@media (max-width: 750px) {
.flex-container {
flex-flow: column nowrap; /* 모바일 디자인에 적용 */
}
.item {
flex: 1; /* 플렉스 아이템들이 가로로 꽉 차게 설정 */
}
}
이 예제에서는 플렉스 아이템을 균등하게 배치하기 위해 flex 속성과 calc()를 사용했으며, 핵심은 flex-flow를 사용해 반응형 레이아웃을 간단하게 구성하는 것입니다.
1번 아이템
2번 아이템
3번 아이템
4번 아이템
5번 아이템
6번 아이템
브라우저 호환성
| 속성 |
데스크탑 Chrome
|
데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
|---|---|---|---|---|
flex-flow
|
29 | 12 | 28 | 9 |
명세서
| 명세서 사양 | |
|---|---|
flex-flow
|
CSS Flexible Box Layout Module Level 1 #flex-flow-property |
참고문헌
같이 보기
- CSS flex-direction 속성 – 플렉스 아이템이 배치되는 흐름 방향 지정
- CSS flex-wrap 속성 – 플렉스 컨테이너의 줄바꿈 허용 설정
- CSS flexbox의 justify-content 속성
- CSS flexbox의 align-items 속성
- CSS flexbox의 align-content 속성
- CSS flexbox의 gap 속성
- CSS 플렉스 컨테이너(Flex Container)
- CSS 플렉스 아이템(Flex Item)
- CSS direction 속성 – 텍스트 등 인라인 콘텐츠 진행 방향 설정
- CSS overflow-wrap 속성
- CSS white-space 속성
- CSS word-break 속성
- CSS line-break 속성