cfafbdbc36
Processed 100+ files including Design Systems, CSS Architectures, and Enterprise Frontend strategies.
4.0 KiB
4.0 KiB
Fluid Typography
📌 Brief Summary
Fluid Typography(유동적 타이포그래피)는 고정된 미디어 쿼리 중단점(breakpoint)에서 폰트 크기가 갑자기 변하는 대신, 뷰포트나 컨테이너의 크기에 비례하여 폰트 크기가 매끄럽고 연속적으로 변하도록 만드는 반응형 웹 디자인 기법입니다 [1, 2]. 최신 CSS에서는 clamp() 함수와 상대 단위(vw, rem 등)를 조합하여 사용하며, 기기마다 다른 화면 크기에 맞춰 최적의 가독성을 제공합니다 [1, 3]. 수동으로 여러 개의 중단점을 계산하거나 지정할 필요가 없다는 것이 가장 큰 장점입니다 [4].
📖 Core 기Content
- 작동 원리와 필요성:
기존의 하드 브레이크포인트(hard breakpoint) 기반 타이포그래피는 화면 크기가 변경될 때 폰트 크기가 갑작스럽게 도약(jarring jumps)하는 문제를 발생시킵니다 [1]. 반면 Fluid Typography는
vw,vi,cqi와 같은 뷰포트 및 컨테이너 단위를 활용하여 지정된 범위 내에서 일정한 비율로 폰트 크기를 보간(interpolate)하여 부드러운 전환을 만들어냅니다 [2, 4]. 이를 통해 스마트폰에서는 너무 작지 않고, 데스크톱에서는 너무 크지 않은 균형 잡힌 텍스트 크기를 유지할 수 있습니다 [3]. - 핵심 구현 방법 (
clamp()함수): 가장 현대적이고 권장되는 구현 방식은 CSS의clamp(min, preferred, max)함수를 사용하는 것입니다 [1, 5, 6]. 이 함수는 최소 폰트 크기(floor), 뷰포트 기반의 선호 크기(scaling value), 그리고 최대 폰트 크기(ceiling)를 설정하여 브라우저가 공간에 맞춰 자동으로 크기를 계산하게 합니다 [1, 3]. 예를 들어font-size: clamp(1.5rem, 2vw + 1rem, 3rem);와 같이 작성하면, 아무리 화면이 작거나 커져도 폰트가 지정된 최소/최대 범위를 벗어나지 않습니다 [1, 3, 7]. - 접근성(Accessibility)을 위한 주의사항:
폰트 크기를
1vw나100vw와 같은 순수 뷰포트/컨테이너 단위로만 설정하는 것은 사용자에게 매우 적대적인(hostile) 방식입니다 [8]. 브라우저 창을 줄이는 것과 돋보기(zoom) 기능을 사용하는 것은 사용자 의도가 다름에도 불구하고 CSS 뷰포트 단위에서는 동일하게 계산되어, 사용자가 브라우저 설정을 통해 화면을 확대하더라도 폰트 크기가 커지지 않게 됩니다 [9, 10]. 이는 "보조 기술 없이 텍스트를 200%까지 확대할 수 있어야 한다"는 웹 콘텐츠 접근성 지침(WCAG 1.4.4)을 직접적으로 위반합니다 [8]. - 안전한 Fluid Typography 설계 (Best Practices):
사용자의 기본 폰트 설정과 브라우저 확대/축소 기능을 존중하기 위해, 뷰포트 단위와 사용자의 선호 단위(
rem,em)를calc()함수로 결합해야 합니다(예:calc(16px + 1vw)) [11]. 또한clamp()를 사용할 때 최소값과 최대값을 모두em또는rem단위로 지정하고, 최대 폰트 크기가 최소 폰트 크기의 2.5배를 초과하지 않도록 설정해야 WCAG SC 1.4.4 기준(200% 확대 보장)을 안전하게 통과할 수 있습니다 [12, 13].
🔗 Knowledge Connections
- Related Topics: Responsive Web Design, CSS Media Queries, Container Queries, Web Content Accessibility Guidelines (WCAG)
- Projects/Contexts: 모바일 퍼스트 및 다양한 디바이스 환경을 위한 반응형 레이아웃 구축, 디자인 시스템의 타이포그래피 토큰 확장 및 최적화
- Contradictions/Notes: 뷰포트 단위(
vw등)는 화면 크기에 반응하여 유동성을 주지만, 단독으로 사용할 경우 사용자의 브라우저 확대(Zoom) 및 기본 폰트 설정을 무시하게 되어 접근성(WCAG)을 심각하게 훼손한다는 점에 주의해야 합니다. 따라서 반드시clamp()및rem/em단위와 혼합하여 사용해야 합니다 [8, 13].
Last updated: 2026-04-26