이 CSS clamp 생성기는 작은 화면에서는 최솟값, 큰 화면에서는 최댓값이 되고 그 사이에서는 선형으로 커지는 clamp(최소, 선호값, 최대) 식을 계산합니다. 픽셀 크기 두 개와 화면 너비 두 개를 입력하면 font-size: clamp(1rem, 0.3333rem + 3.3333vw, 3rem); 같은 선언을 바로 돌려줍니다.
미디어 쿼리를 줄줄이 쓰지 않고 유동 글자와 여백을 만들고 싶은 프런트엔드 개발자와 디자이너를 위한 도구입니다. 구간마다 뚝뚝 바뀌는 대신 하나의 값이 연속으로 변합니다. font-size, padding, margin, gap, width, 임의의 속성에 쓸 수 있고, 일반 선언·CSS 변수·Tailwind 임의값 형식으로 복사할 수 있습니다.
모든 계산은 입력한 숫자를 바탕으로 브라우저 안에서 이루어지며, 서버로 전송되지 않고 가입도 필요 없습니다.
사용 방법
예제를 고르거나 두 크기를 입력
본문, 제목, 섹션 여백, 그리드 간격 예제에서 시작하거나 최솟값과 최댓값을 px로 직접 입력하세요. 숫자 라벨을 좌우로 끌면 값이 바뀝니다.
뷰포트 범위 정하기
작은 뷰포트는 값이 아직 최솟값인 가장 넓은 화면, 큰 뷰포트는 값이 최댓값에 닿는 화면 너비입니다. 휴대폰과 노트북 기준으로는 320과 1280을 많이 씁니다.
속성·단위·루트 크기 선택
CSS 속성을 고르고 rem 또는 px 출력을 선택합니다. rem은 루트 글꼴 크기(기본 16px)로 환산하므로 프로젝트에서 루트 크기를 바꿨다면 값을 맞춰 주세요.
그래프로 확인
선은 최솟값에서 평평하게 시작해 범위 안에서 올라가고 최댓값에서 다시 평평해집니다. 마커를 끌거나 방향키로 움직이면 원하는 뷰포트에서의 정확한 크기를 볼 수 있습니다.
필요한 형식으로 복사
CSS 선언, CSS 변수, Tailwind 클래스 탭을 바꿔 가며 복사하세요. Ctrl 또는 Command와 Enter를 함께 누르면 현재 탭을 마우스 없이 복사합니다.
작동 원리
선호값을 만드는 공식
clamp()의 가운데 인자는 뷰포트 너비에 대한 직선입니다. 최솟값·최댓값(px)과 두 뷰포트 너비로 기울기(뷰포트 1px당 크기 변화)와 절편(너비 0에서 그 직선이 지나는 값)을 구합니다.
1vw는 뷰포트 너비의 1%이므로 기울기에 100을 곱해 vw 계수를 얻고, 절편은 루트 글꼴 크기로 나눠 rem으로 바꿉니다. 모든 수는 소수 넷째 자리에서 반올림하며 -0은 출력하지 않습니다.
기울기 = (최대 - 최소) / (큰 뷰포트 - 작은 뷰포트)
절편 = 최소 - 기울기 * 작은 뷰포트
선호값 = 절편(rem) + 기울기 * 100vw
결과 = clamp(최소, 선호값, 최대)단계식 미디어 쿼리보다 clamp()가 나은 이유
미디어 쿼리 사다리는 정해진 너비에서만 크기가 바뀌어 360px과 768px에서는 맞아도 600px에서는 어색할 수 있습니다. clamp() 값은 그 사이 모든 너비에서 맞고, 규칙 여러 개 대신 선언 하나면 됩니다.
clamp()는 현재 모든 주요 브라우저(Chrome·Edge 79, Firefox 75, Safari 13.1)가 지원합니다. 여기서 쓰는 현대 문법은 clamp() 인자가 이미 수식으로 계산되므로 calc()로 감싸지 않습니다.
| 부분 | 뜻 | 예 |
|---|---|---|
| 최소 | 작은 뷰포트 아래에서 쓰는 하한 | 1rem |
| 선호값 | rem과 vw로 이루어진 선형식 | 0.3333rem + 3.3333vw |
| 최대 | 큰 뷰포트 위에서 쓰는 상한 | 3rem |
접근성: WCAG 1.4.4와 확대
WCAG 2.2의 성공 기준 1.4.4(텍스트 크기 조절)는 콘텐츠 손실 없이 텍스트를 200%까지 키울 수 있어야 한다고 요구합니다. 뷰포트 단위는 rem처럼 브라우저 확대에 반응하지 않습니다. 확대하면 CSS 픽셀 기준 뷰포트가 줄어들고 공식의 vw 부분도 함께 줄어듭니다.
글자는 최댓값을 최솟값의 2.5배 이하로 두라는 경험칙이 널리 쓰입니다. 이 도구는 font-size 범위가 그 비율을 넘거나 글자를 px로 출력하면 경고를 보여 줍니다. px 값은 사용자가 브라우저에 설정한 글꼴 크기를 무시하기 때문입니다.
실제 예시
최소 16px, 최대 48px, 뷰포트 320px~1280px, font-size, remfont-size: clamp(1rem, 0.3333rem + 3.3333vw, 3rem);기울기는 32 / 960 = 0.03333이라 3.3333vw입니다. 800px에서 크기는 32px입니다.
최소 16px, 최대 18px, 뷰포트 320px~1280px, font-size, remfont-size: clamp(1rem, 0.9583rem + 0.2083vw, 1.125rem);범위가 좁아 뷰포트 960px 동안 2px만 커지므로 비율이 2.5보다 훨씬 작습니다.
최소 24px, 최대 96px, 뷰포트 320px~1280px, padding, rempadding: clamp(1.5rem, 7.5vw, 6rem);절편이 정확히 0이라 선호값은 7.5vw만 남고 rem 항은 생략됩니다.
최소 16px, 최대 64px, 뷰포트 400px~1200px, font-size, remfont-size: clamp(1rem, -0.5rem + 6vw, 4rem);직선이 0보다 넓은 뷰포트에서 0을 지나므로 절편이 음수이며 부호까지 출력합니다.
최소 16px, 최대 48px, 뷰포트 320px~1280px, font-size, pxfont-size: clamp(16px, 5.3333px + 3.3333vw, 48px);동작은 하지만 px 글자는 브라우저 기본 글꼴 크기를 무시하므로 글자에는 보통 rem이 낫습니다.
자주 하는 실수
루트 글꼴 크기를 16px로 가정
rem 출력은 루트 크기로 나눕니다. CSS에
html { font-size: 62.5% }가 있다면 루트 크기에 10을 넣어야 렌더링 크기가 맞습니다.최댓값이 최솟값보다 크지 않음
clamp()가 보간하려면 범위가 있어야 합니다. 최댓값이 최솟값 이하이거나 큰 뷰포트가 작은 뷰포트보다 넓지 않으면 값을 만들지 않고 문제를 알려 줍니다.
너무 큰 font-size 비율
16px에서 64px로 가는 제목은 인상적이지만 브라우저 확대 시 200%에 못 미칠 수 있습니다. 글자는 비율을 2.5배 안팎 이하로 유지하세요.
글자에 vw만 사용
font-size: 4vw는 하한·상한이 없고 사용자 확대를 완전히 무시합니다. rem 항과 clamp 경계가 있어야 쓸 만해집니다.뷰포트 바깥 구간을 잊음
작은 뷰포트 아래에서는 최솟값, 큰 뷰포트 위에서는 최댓값으로 고정됩니다. 디자인이 실제로 바뀌는 너비에 맞춰 뷰포트를 정하세요.
자주 묻는 질문
CSS에서 clamp()는 무엇을 하나요?
가운데 값을 돌려주되 첫 인자보다 작아지거나 마지막 인자보다 커지지 않게 합니다. 가운데 값이 뷰포트 기반이면 화면에 따라 변하다가 두 한계에서 멈추는 크기가 됩니다.
뷰포트 너비는 얼마로 잡아야 하나요?
320px~1280px이 흔한 기본값입니다. 지원하는 가장 좁은 휴대폰 너비와 레이아웃이 더는 커지지 않는 너비(예: 컨테이너 최대 너비)를 쓰세요.
글자 말고 여백이나 레이아웃에도 쓸 수 있나요?
네. 길이를 받는 모든 속성에 쓸 수 있습니다. padding, margin, gap, width와 임의 속성 이름을 선택할 수 있습니다.
Tailwind 출력은 어떻게 쓰나요?
클래스를 마크업에 붙여 넣으면 됩니다. Tailwind 임의값 규칙에 따라 공백은 밑줄로 쓰고, 글자 크기에는 색으로 해석되지 않도록 length: 힌트를 붙입니다.
결과가 픽셀 단위로 정확한가요?
숫자는 소수 넷째 자리까지 반올림하므로 눈에 보이는 차이는 없습니다. 그래프 마커가 임의의 뷰포트에서 계산된 픽셀 크기를 보여 주므로 직접 확인할 수 있습니다.
입력한 값이 어디로 전송되나요?
전송되지 않습니다. 계산은 브라우저에서 이루어지고, 공유 버튼은 누를 때만 숫자가 담긴 링크를 만들며 서버에는 아무것도 저장하지 않습니다.
더 깊이 읽기
마지막 업데이트:
