flex-basis
플렉스 아이템의 초기 크기를 설정합니다. width와 비슷하지만 flex 레이아웃에서만 동작하며, flex-grow와 flex-shrink가 적용되기 전의 기준 크기입니다.
클래스 패턴
fb{value} 형태로 값을 지정합니다.
주의: fb 접두사의 이중 용도
fb 접두사는 flex-basis와 filter: blur() 두 가지로 사용됩니다. fbauto, fb50p는 flex-basis이고, fb5px처럼 px 단위만 있으면 filter: blur일 수 있으므로 문맥에 따라 구분합니다.
| 클래스 | CSS | 설명 |
|---|---|---|
fbauto | flex-basis: auto | 콘텐츠 또는 width/height 기준 (기본값) |
fb0p | flex-basis: 0% | 초기 크기 0. fg1과 조합하면 균등 분배 |
fb20rem | flex-basis: 20rem | 초기 크기 200px |
fb30rem | flex-basis: 30rem | 초기 크기 300px |
fb25p | flex-basis: 25% | 부모 너비의 25% |
fb50p | flex-basis: 50% | 부모 너비의 50% |
fb100p | flex-basis: 100% | 부모 너비의 100% (한 줄 전체) |
시각적 비교
flex-basis 값에 따라 아이템의 초기 크기가 어떻게 달라지는지 비교합니다.
fbauto — 콘텐츠 크기 기준
각 아이템이 콘텐츠 크기에 따라 너비가 결정됩니다
fb20rem — 고정 초기 크기 (200px)
콘텐츠 길이와 무관하게 동일한 초기 너비
fb50p — 부모의 50%
부모 너비의 50%를 초기 크기로 가집니다
flex-basis vs width
flex 컨테이너 안에서는 flex-basis가 width보다 우선합니다.
| flex-basis | width | |
|---|---|---|
| flex 컨테이너 안 | width보다 우선 | flex-basis가 없을 때 fallback |
| flex 컨테이너 밖 | 무시됨 | 정상 동작 |
| flex-direction: column | height 역할 | width 역할 (별개) |
| auto 값일 때 | width/height 값 참조 | 콘텐츠 또는 명시된 값 |
클래스별 상세
fbautoflex-basis: auto
콘텐츠 크기 또는 width/height 값을 기준으로 초기 크기를 결정합니다. flex-basis의 기본값이며, 가장 자연스러운 동작입니다.
<!-- 자연스러운 크기 분배 -->
<div class="df gap8px">
<div class="fbauto fg1 bg6366F1 cFFFFFF p16px br4px">짧은</div>
<div class="fbauto fg1 bg34D399 c000000 p16px br4px">좀 더 긴 콘텐츠</div>
<div class="fbauto fg1 bgF59E0B c000000 p16px br4px">아주 긴 콘텐츠가 들어있는 영역</div>
</div>
<!-- 콘텐츠 크기 비율에 따라 공간이 분배됩니다 -->fb{N}{unit}flex-basis: {value}
고정된 초기 크기를 설정합니다. rem, % 단위를 지원합니다. flex-grow/shrink에 의해 실제 크기는 변할 수 있습니다.
<!-- 고정 초기 너비 카드 -->
<div class="df fww gap16px">
<div class="fb30rem fg0 fs0 bg18181B p2rem br8px">
초기 너비 300px (고정)
</div>
<div class="fb30rem fg0 fs0 bg18181B p2rem br8px">
초기 너비 300px (고정)
</div>
</div>
<!-- 퍼센트 기반 레이아웃 -->
<div class="df gap16px">
<aside class="fb25p fs0 bg18181B p2rem br8px">25% 사이드바</aside>
<main class="fg1 bg27272A p2rem br8px">나머지 메인</main>
</div>fb0pflex-basis: 0%
초기 크기를 0으로 설정합니다. fg1과 함께 사용하면 콘텐츠 크기를 무시하고 완전히 균등한 분배가 됩니다.
<!-- 완전 균등 분배 -->
<div class="df gap8px">
<div class="fb0p fg1 bg6366F1 cFFFFFF p16px br4px tac">1/3</div>
<div class="fb0p fg1 bg34D399 c000000 p16px br4px tac">1/3</div>
<div class="fb0p fg1 bgF59E0B c000000 p16px br4px tac">1/3</div>
</div>
<!-- 콘텐츠 길이와 무관하게 정확히 동일한 너비 -->
<!-- fbauto와 비교 -->
<div class="df gap8px mt16px">
<div class="fbauto fg1 bg6366F1 cFFFFFF p16px br4px">짧은</div>
<div class="fbauto fg1 bg34D399 c000000 p16px br4px">아주아주 긴 텍스트 콘텐츠</div>
</div>
<!-- fbauto + fg1은 콘텐츠 크기 비율로 공간 분배 (불균등) -->팁 & 주의사항
균등 분배에는 fb0p + fg1
fbauto fg1은 콘텐츠 크기에 따라 약간 다른 너비가 됩니다. 완전히 동일한 너비가 필요하면 fb0p fg1을 사용하세요.
flex 단축 속성 활용
grow, shrink, basis를 함께 설정하려면 fa(flex: auto = 1 1 auto)나 flex1-0-0p 등의 단축 클래스가 더 간결합니다.
fb 접두사 충돌 주의
fb는 flex-basis와 filter: blur 두 곳에서 사용됩니다. fbauto, fb50p는 flex-basis이고, px 단위만 있으면 문맥에 따라 달라질 수 있으니 확인이 필요합니다.