정의 및 사용 방법
flex-wrap 속성은 플렉스 컨테이너의 플렉스 아이템들이
한 줄로 제한되는지, 또는 줄바꿈(wrap)이 허용되어 여러 줄을 가질 수 있는지를 설정하며,
여러 줄일 경우 줄이 쌓이는 방향도 함께 설정할 수 있습니다.
특징
기본 예제
<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-wrap: /* value <= 라이브 데모에서 동적으로 구현 */
}
.item { /* 플렉스 아이템 */
border: 4px solid blue;
background-color: yellow;
}
/*
* 일부 스타일 코드는 가독성을 위해 생략했습니다!
*/
Item-1
Item-2
Item-3
Item-4
Item-5
Item-6
형식 구문
selector {
flex-wrap: nowrap | wrap | wrap-reverse
}
구문
/* 키워드 값 */
flex-wrap: nowrap;
flex-wrap: wrap;
flex-wrap: wrap-reverse;
/* 글로벌 값 */
flex-wrap: inherit;
flex-wrap: initial;
flex-wrap: revert;
flex-wrap: revert-layer;
flex-wrap: unset;
값
nowrap |
초깃값임.
플렉스 컨테이너는 모든 플렉스 아이템을 한 줄에 배치합니다. 플렉스 아이템들의 배치가 플렉스 컨테이너 크기를 초과하더라도 줄바꿈이 발생하지 않으며, 한 줄을 초과할 경우 플렉스 컨테이너가 넘칠 수 있습니다. |
|---|---|
wrap |
플렉스 컨테이너는 플렉스 아이템들의 배치가 한 줄의 공간이 부족하면 한 줄을 초과하지 않도록 감싸서(wrap) 다음 줄로 넘어가도록 설정합니다. 즉, 여러 줄에 걸쳐 배치할 수 있습니다. |
wrap-reverse |
wrap과 동일하지만, 줄이 쌓이는 방향은 반대가 됩니다.
즉, 시작하는 줄부터 끝나는 줄이 쌓이는 방향은 wrap과 반대가 됩니다. |
형식 정의
| 초깃값 | nowrap |
|---|---|
| 적용 요소 | 플렉스 컨테이너 |
| 상속 | 아니오 |
| 애니메이션 | 아니오 |
접근성 고려 사항
flex-wrap 속성의 값을 wrap-reverse로 설정하면, 저시력으로 인해 스크린 리더나 접근성 보조 기술을 사용하는 사용자에게는 시각적으로 줄이 쌓이는 방향이 HTML 구조의 순서와 다르게 보여 문서를 이해하기가 훨씬 더 어려워질 수 있습니다.
이러한 시각적 변화는 레이아웃 표현에는 유용할 수 있지만, 콘텐츠의 흐름을 시각적 순서에 의존해 이해해야 하는 경우에는 혼란을 줄 수 있습니다. 따라서 HTML 구조 순서와 시각적 표현이 달라질 수 있다는 점을 고려하여, 사용자 경험에 부정적인 영향을 주지 않는지 확인하는 것이 중요합니다.
활용 예제
flex-wrap 속성은 플렉스 레이아웃에서 여러 줄로 플렉스 아이템을 배치할 때 매우 유용합니다.
다음은 해시태그처럼 길이가 제각각인 요소들이 부모 박스 밖으로 나가지 않게 해주는 예제입니다.
<div class="tag-container">
<span class="tag"># HTML</span>
<span class="tag"># CSS_레이아웃</span>
<span class="tag"># Flexbox</span>
<span class="tag"># 반응형웹디자인</span>
<span class="tag"># 코딩에브리바디</span>
</div>
.tag-container {
display: flex;
/* 태그가 박스를 넘지 않도록 설정 */
flex-wrap: wrap;
gap: 10px;
max-width: 300px; /* 좁은 컨테이너 예시 */
padding: 10px;
border: 1px solid silver;
}
.tag {
padding: 5px 12px;
background-color: #e3f2fd;
border-radius: 20px;
font-size: 14px;
}
# HTML
# CSS_레이아웃
# Flexbox
# 반응형웹디자인
# 코딩에브리바디
브라우저 호환성
| 속성 |
데스크탑 Chrome
|
데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
|---|---|---|---|---|
flex-wrap
|
29 | 12 | 28 | 9 |
명세서
| 명세서 사양 | |
|---|---|
flex-wrap
|
CSS Flexible Box Layout Module Level 1 #flex-wrap-property |