Flex

Flex

CSS Flexbox 기반의 1차원 레이아웃 시스템입니다. Grid와 같은 방식으로 부모에서 균등 배치·비율·간격·반응형 크기를 제어하고, 필요한 경우에만 FlexItem을 사용합니다.

기본 페이지 레이아웃

헤더와 푸터는 전체 너비를 사용하고, 본문은 md 이상에서 사이드바 3/12와 콘텐츠 9/12로 나눕니다.

Header
Main content
Footer

콘텐츠가 있는 페이지 레이아웃

기본 레이아웃의 Main content 안에 제목·설명과 반응형 콘텐츠 섹션을 배치한 활용 예시입니다.

Header

Main content

페이지 제목과 설명이 들어가는 기본 콘텐츠 영역입니다.

Content section

주요 정보나 기능을 배치합니다.

Content section

관련 정보나 보조 콘텐츠를 배치합니다.

Footer

부모에서 제어

방향·비율·자식 일괄 span은 부모 Flex에 지정합니다.

flex_cols-3
flex_cols-3
flex_cols-3
1
2
flex_items-span-4
flex_items-span-4
flex_items-span-4
flex_items-span-4
flex_items-span-4
flex_items-span-4

12열 전체 활용

item-span=1을 부모에 지정하면 12개 항목이 한 행의 전체 열을 채웁니다.

1
2
3
4
5
6
7
8
9
10
11
12

균등 항목

cols로 동일 너비 항목 수를 지정하고 간격을 제외한 공간을 균등 분할합니다.

cols 2
cols 2
cols 4
cols 4
cols 4
cols 4

비율 항목

ratio로 2~3개 항목의 grow 비율을 부모에서 지정합니다.

1
2
1
2
1

자식 일괄 span (12단위)

모든 자식이 같은 너비일 때 item-span을 부모에 지정합니다.

span 6
span 6
span 6
span 6
span 3
span 3
span 3
span 3

자식별 span (혼합 레이아웃)

항목마다 너비가 다를 때 FlexItem의 span을 사용합니다.

span 8
span 4
span 4
span 4
span 4

간격

gap으로 기본 간격을 sm·lg·none 중에서 선택합니다.

gap sm
gap sm
gap sm
gap lg
gap lg
gap lg

반응형

Flex와 FlexItem의 md·lg props로 반응형 배치를 제어합니다.

1 → md 2 → lg 3개
1 → md 2 → lg 3개
1 → md 2 → lg 3개
span 12 → md 6 → lg 4
span 12 → md 6 → lg 4
span 12 → md 6 → lg 4
개별 span 12 → md 8 → lg 9
개별 span 12 → md 4 → lg 3

자동 배치

auto-fit은 --flex-auto-min을 기준으로 항목을 자동 줄바꿈하고 남는 공간을 채웁니다.

auto-fit
auto-fit
auto-fit
auto-fit
auto-fit
auto-fit

API · Flex Props

Prop타입기본값설명
direction'row' | 'column''row'기본 배치 방향
direction-md'row' | 'column'md 이상 배치 방향
direction-lg'row' | 'column'lg 이상 배치 방향
wrapbooleanfalse자식 줄바꿈 (flex_wrap)
colsnumber | string균등 항목 수 (flex_cols-*)
cols-mdnumber | stringmd 이상 균등 항목 수
cols-lgnumber | stringlg 이상 균등 항목 수
ratio'1-1' | '2-1' | '1-2' | '3-1' | '1-1-1' | '1-2-1'2~3개 자식의 grow 비율
item-spannumber | string모든 자식의 12단위 너비 (flex_items-span-*)
item-span-mdnumber | stringmd 이상 자식 일괄 너비
item-span-lgnumber | stringlg 이상 자식 일괄 너비
gap'sm' | 'lg' | 'none'항목 간격. 생략 시 --flex-gap
align'start' | 'center' | 'end' | 'stretch' | 'baseline''stretch'교차축 정렬
justify'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'주축 정렬
equalbooleanfalse모든 자식에 동일 grow 적용
auto-fitbooleanfalse최소 너비를 기준으로 항목 자동 배치

API · FlexItem Props

Prop타입기본값설명
asstring'div'렌더링할 HTML 요소
spannumber | string12단위 개별 너비
span-mdnumber | stringmd 이상 개별 너비
span-lgnumber | stringlg 이상 개별 너비
growbooleanfalse남는 공간 채우기 (flex_grow)
fitbooleanfalse콘텐츠 너비 유지 (flex_fit)
align'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline'해당 항목의 교차축 정렬
order1–12시각적 배치 순서

API · Flex Slots

슬롯설명
defaultFlex 자식 콘텐츠

API · FlexItem Slots

슬롯설명
defaultFlex 항목 내부 콘텐츠

클래스 · 속성

Vue 컴포넌트가 렌더하는 OOCSS 클래스입니다. HTML 마크업으로 직접 작성할 때 동일하게 조합합니다.

클래스설명
flex · flex_row · flex_colFlex 루트와 배치 방향
flex_row-md · flex_col-md · flex_row-lg · flex_col-lg반응형 배치 방향
flex_wrap항목 줄바꿈
flex_cols-* · flex_cols-md-* · flex_cols-lg-*균등 항목 수
flex_ratio-* · flex_equal자식 비율 · 균등 grow
flex_auto-fit최소 너비 기반 자동 줄바꿈 배치
flex_items-span-* · flex_items-span-md-* · flex_items-span-lg-*모든 자식의 12단위 너비
flex_item-span-* · flex_item-span-md-* · flex_item-span-lg-*개별 자식의 12단위 너비
flex_gap-sm · flex_gap-lg · flex_gap-none간격 변형
flex_align-* · flex_justify-* · flex_self-*부모·자식 정렬
flex_grow · flex_fit · flex_order-*자식 grow · 고정 너비 · 순서

디자인 토큰

토큰기본값설명
--flex-gapvar(--space-md)기본 간격
--flex-gap-sm · --flex-gap-lgvar(--space-sm) · var(--space-lg)간격 변형
--flex-auto-min10rem자동 배치 항목의 최소 너비