~ / posts / developer

CSS clamp() 반응형 글자 크기 공식, 최소·최대 폭으로 값 계산하는 법

clamp(1rem, 0.8333rem + 0.8333vw, 1.5rem)는 폭 320~1280px에서 글자를 16px에서 24px로 키우는 코드예요. 기울기와 절편 공식, 제목·본문·여백 예시, 접근성 주의점까지 직접 계산해 정리했어요.

화면 폭이 달라질 때마다 글자 크기를 미디어 쿼리로 끊어 쓰다 보면 breakpoint 경계에서 글자가 갑자기 툭 커지는 느낌이 들어요. 결론부터 말하면 clamp(최소, 선호값, 최대) 한 줄이면 폭 구간 안에서 글자 크기가 직선으로 부드럽게 커지고, 구간 밖에서는 최소·최대값에 고정돼요. 선호값은 절편 + 기울기 × 100vw 공식으로 구해요.

예를 들어 폭 320px에서 16px, 폭 1280px에서 24px가 되길 원하면 코드는 clamp(1rem, 0.8333rem + 0.8333vw, 1.5rem)이에요. 이 글에서는 이 숫자가 어떻게 나오는지 직접 계산하고, 제목·본문·여백에 쓰는 값, 그리고 실수하기 쉬운 부분을 정리해요. 계산이 귀찮다면 CSS clamp() 계산기에 최소·최대 값만 넣으면 같은 식으로 코드를 만들어 줘요.

광고

clamp()는 어떻게 값을 고를까

clamp(MIN, VAL, MAX)는 max(MIN, min(VAL, MAX))와 같은 뜻이에요. 먼저 선호값 VAL을 계산하고, MIN보다 작으면 MIN을, MAX보다 크면 MAX를 돌려줘요. 그래서 VAL이 vw처럼 화면 폭에 따라 변하는 값이면 폭이 좁을 때는 최소, 넓을 때는 최대, 그 사이에서는 직선으로 변하는 크기가 만들어져요. 문법은 MDN의 CSS clamp() 문서에 정리돼 있어요.

폭에 따라 최소값 고정, 직선 변화, 최대값 고정 세 구간으로 나뉘는 clamp 그래프
320px 이하는 16px, 1280px 이상은 24px로 고정되고 그 사이만 직선으로 변해요

선호값 공식: 기울기와 절편

직선의 식은 크기 = 기울기 × 폭 + 절편이에요. 두 점 (최소폭, 최소크기)와 (최대폭, 최대크기)를 지나는 직선을 구하면 돼요.

16px(320px)에서 24px(1280px)로 키우는 경우를 계산하면 이래요.

  1. s = (24 − 16) ÷ (1280 − 320) = 8 ÷ 960 = 0.008333
  2. b = 16 − 0.008333 × 320 = 16 − 2.6667 = 13.3333px, rem으로 바꾸면 13.3333 ÷ 16 = 0.8333rem
  3. 선호값 = 0.8333rem + 0.8333vw → clamp(1rem, 0.8333rem + 0.8333vw, 1.5rem)
기울기, 절편, 조립 순서로 이어지는 clamp 코드 만들기 4단계
범위를 정하고 기울기와 절편을 구해 조립하는 순서

검산도 해 볼 수 있어요. 폭 800px이라면 13.3333 + 0.008333 × 800 = 20px로, 320px(16px)과 1280px(24px)의 정중앙이에요. 폭이 200px로 좁아지면 계산값은 14.99px지만 최소값 16px 아래로는 내려가지 않고, 폭이 2000px이면 계산값 30px 대신 24px로 멈춰요.

제목 24→40px clamp의 폭별 실제 글자 크기 (폭 320~1280px 구간)
01020304032048076810241280320 · 글자 크기 24px480 · 글자 크기 26.7px768 · 글자 크기 31.5px1024 · 글자 크기 35.7px1280 · 글자 크기 40px40

구간 안에서는 폭이 늘어난 만큼 일정한 비율로 커져요.

단위: px · 자료: 기울기 0.016667, 절편 18.6667px 로 직접 계산
표로 보기
구분글자 크기
32024
48026.7
76831.5
102435.7
128040

용도별 예시 값

폭 320~1280px 구간에서 계산한 값이에요. 모두 위 공식으로 직접 구했어요.

용도최소 → 최대기울기코드
본문16 → 18px0.2083vwclamp(1rem, 0.9583rem + 0.2083vw, 1.125rem)
소제목(h3)18 → 24px0.625vwclamp(1.125rem, 1.0rem + 0.625vw, 1.5rem)
제목(h2)24 → 40px1.6667vwclamp(1.5rem, 1.1667rem + 1.6667vw, 2.5rem)
여백(padding)16 → 48px3.3333vwclamp(1rem, 0.3333rem + 3.3333vw, 3rem)

소제목 행을 검산하면 s = 6 ÷ 960 = 0.00625, b = 18 − 0.00625 × 320 = 16px = 1rem, 기울기는 0.625vw예요.

같은 폭 구간에서 용도별 크기 증가량
010203040본문 · 증가량 2px2본문소제목 · 증가량 6px6소제목제목 · 증가량 16px16제목여백 · 증가량 32px32여백
단위: px · 자료: 폭 320→1280px, 최대 − 최소 값
표로 보기
구분증가량
본문2
소제목6
제목16
여백32

본문처럼 변화가 작은 요소는 굳이 clamp를 쓰지 않고 고정 값으로 두어도 읽기에 큰 차이가 없어요. 효과가 크게 느껴지는 건 제목과 여백이에요.

왜 vw만 쓰지 않고 rem을 더할까

font-size: 2vw처럼 쓰면 사용자가 브라우저 설정에서 기본 글꼴 크기를 키워도 글자가 그대로일 수 있어요. rem 항을 더한 선호값은 그 설정에 반응해서 접근성에 유리해요. 반대로 px로 출력하면 설정과 무관한 고정 값이 되니 글자 크기에는 rem을 권해요. px와 rem 변환은 px→rem 변환기로 확인할 수 있고, 두 단위의 차이는 px rem em 차이 글에 자세히 있어요.

clamp()를 쓸 때 흔한 실수

미디어 쿼리와 어떻게 나눠 쓸까

clamp는 크기를 연속적으로 바꿀 때, 미디어 쿼리는 레이아웃 구조를 바꿀 때(2열→1열, 메뉴 접기 등) 알맞아요. 둘은 경쟁 관계가 아니라서 같이 써요. 예를 들어 제목 크기는 clamp로 부드럽게 키우고, 사이드바는 768px 미만에서 미디어 쿼리로 아래로 내리는 식이에요. 코드량 면에서도 breakpoint 3개에 글자 크기를 하나씩 쓰는 것보다 한 줄로 줄어들어 유지보수가 쉬워요.

실전 예시: 메인 큰 제목을 32px에서 64px로

폭 기준을 휴대폰 375px, 데스크톱 1440px로 잡고 큰 제목을 32px에서 64px로 키운다고 해 볼게요. 기울기는 (64 − 32) ÷ (1440 − 375) = 32 ÷ 1065 = 0.030047이고, 절편은 32 − 0.030047 × 375 = 20.7324px입니다. rem으로 바꾸면 20.7324 ÷ 16 = 1.2958rem, vw로는 0.030047 × 100 = 3.0047vw라서 코드는 clamp(2rem, 1.2958rem + 3.0047vw, 4rem)이에요. 태블릿 폭 768px에서는 20.7324 + 0.030047 × 768 = 43.81px가 돼요. 이렇게 변화 폭이 두 배인 제목은 줄바꿈이 크게 달라지니 375px와 768px, 1440px에서 모두 줄 수를 확인해 두세요. 줄 간격은 line-height: 1.2처럼 단위 없는 값으로 두면 글자가 커질수록 줄 간격도 같이 커져요.

자주 묻는 질문

clamp()는 모든 브라우저에서 되나요?

현재 주요 브라우저에서 널리 지원돼요. 아주 오래된 브라우저까지 고려한다면 clamp 선언 바로 위에 font-size: 1rem; 같은 고정 값을 먼저 쓰세요. 지원하는 브라우저에서는 뒤에 오는 선언이 덮어써요.

글자 크기 말고 width나 gap에도 쓸 수 있나요?

길이를 받는 속성이면 모두 가능해요. padding, margin, gap, width, border-radius에 같은 방식으로 쓸 수 있어요.

vw 대신 %를 쓰면 안 되나요?

font-size의 %는 부모 글자 크기 기준이라 화면 폭과 무관해요. 화면 폭에 반응시키려면 vw(또는 컨테이너 쿼리 단위)를 써야 해요.

최소 폭과 최대 폭은 어떻게 정하나요?

디자인 시안의 작은 화면 폭과 큰 화면 폭을 기준으로 해요. 휴대폰은 320~375px, 데스크톱은 1280~1440px을 많이 쓰고, 본문 영역의 max-width가 정해져 있다면 그 폭을 최대 폭으로 잡아도 돼요.

값이 마음에 안 들면 어떻게 고치나요?

최소·최대 크기와 폭 값을 바꿔 다시 계산하면 돼요. CSS clamp() 계산기에서는 폭별 실제 크기를 표로 보여 줘서 어느 폭에서 얼마가 되는지 바로 확인할 수 있어요.

정리

clamp() 선호값은 기울기와 절편 두 숫자만 구하면 돼요. 16→24px(320→1280px)는 clamp(1rem, 0.8333rem + 0.8333vw, 1.5rem)이고, 같은 방식으로 제목·여백 값도 만들 수 있어요. 글자는 rem 단위로, 줄 길이와 글자 대비는 따로 점검하는 것을 잊지 마세요. 다른 CSS 도구로는 그라데이션 생성기와 박스 섀도우 생성기도 함께 써 보세요.

참고한 자료

#css clamp#clamp 계산#fluid typography#반응형 글자 크기#vw rem clamp#clamp 공식#미디어쿼리 없이 반응형#css 유동 폰트
← 이전 글px rem em 차이, 언제 무엇을 쓰나와 px→rem 변환표 총정리

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →