PX ↔ REM ↔ EM ↔ PT 변환기

기준 크기를 설정할 수 있는 양방향 CSS 단위 변환기 — px, rem, em, pt 값이 함께 업데이트됩니다.

조회수 827회

작동 방식

rem = px ÷ 기준 크기입니다(기본값 16px, 즉 24px = 1.5rem). em도 같은 방식으로 작동하지만 요소 자신이 상속받은 글꼴 크기 — 이 변환기의 "컨텍스트 크기" 항목 — 를 기준으로 합니다. pt는 인쇄용 단위로, 1pt = 1.333px(96dpi ÷ 72)입니다. 어느 항목에 입력하든 나머지 값이 자동으로 따라옵니다.

계산 예시: 16px 기준에서 1.25rem 크기의 제목은 20px로 렌더링됩니다. 자체 글꼴 크기가 1.125rem(18px)인 컴포넌트 안에 0.875em짜리 레이블을 중첩시키면 15.75px로 렌더링되는데, em은 루트가 아니라 가장 가까운 부모 요소를 기준으로 누적되기 때문입니다.

알아두면 좋은 점

  • rem은 고정된 브라우저 기본값이 아니라 루트 요소를 기준으로 합니다. 16px이라는 가정은 아무도 그것을 바꾸지 않았을 때만 유효합니다. 사용자가 접근성 설정에서 브라우저의 기본 글꼴 크기를 늘리면 — 저시력 사용자들 사이에서 흔한 설정입니다 — rem 기반의 모든 값이 그에 비례하여 함께 커집니다. 픽셀 값은 그렇지 않습니다. 16px 단락은 사용자의 브라우저 설정과 무관하게 항상 16px로 유지됩니다.
  • 이것이 접근성 가이드라인이 글꼴 크기와 여백에 rem을 권장하는 이유입니다. rem으로 구성된 레이아웃은 사용자가 선택한 텍스트 크기를 처음부터 끝까지 존중합니다 — 제목, 본문, 그 주변의 여백이 모두 함께 커지므로, 텍스트가 커져도 디자인이 깨지지 않고 비례를 유지합니다.
  • em은 자신의 중첩 구조를 기준으로 하며, 값이 누적됩니다. 이미 1.5em 크기인 요소 안에 있는 1.5em 값은 루트 기준의 2.25배로 렌더링됩니다 — 버튼 패딩처럼 자체 글꼴 크기 컨텍스트에 맞춰 조정되어야 하는 컴포넌트에는 유용하지만, 여러 단계로 중첩되는 경우에는 위험할 수 있습니다.
  • 오래된 "62.5% 트릭" — 암산을 쉽게 하기 위해 루트를 10px로 설정하여 1rem = 10px로 만드는 방법 — 은 지금도 작동하지만, 새 프로젝트에서는 피하는 것이 좋습니다. 대부분의 컴포넌트 라이브러리는 16px 루트를 전제로 하므로, 이를 재정의하면 외부 라이브러리 코드에서 예상치 못한 크기 문제가 발생할 수 있습니다.
  • pt는 px를 기준으로 정의되며, 그 반대가 아닙니다. CSS는 1in = 96px = 72pt라는 비율을 고정하므로, 1pt = 96/72 = 정확히 1.333px입니다. 이는 주로 디자인을 인쇄물이나 PDF로 내보낼 때 중요한데, 그런 환경에서는 pt가 고유 단위이기 때문입니다 — 이 변환은 화면상의 크기와 인쇄된 크기를 일치시켜 줍니다.

자주 묻는 질문

제 em 값이 rem 값과 다른 이유는 무엇인가요?

em은 가장 가까운 곳에서 설정된 글꼴 크기를 기준으로 곱해지며, 중첩될수록 누적됩니다. 1.5em 요소 안에 있는 1.5em은 루트 기준의 2.25배가 됩니다. rem은 항상 루트만 참조하기 때문에, 이러한 예측 가능성 덕분에 널리 쓰이게 되었습니다.

1pt는 정말 1.333px인가요?

CSS에서는 정의상 그렇습니다: 1in = 96px = 72pt. 인쇄용 PDF와 CSS는 이 비율에 동의하지만, 실제 물리적 크기는 화면의 실제 DPI에 따라 달라집니다.

접근성 가이드라인은 왜 텍스트에 px 대신 rem을 권장하나요?

rem은 사용자의 글꼴 크기 설정에 맞춰 조정되지만 px는 그렇지 않기 때문입니다. 브라우저의 기본 텍스트 크기를 늘리는 사용자 — 저시력을 보완하기 위한 흔한 설정입니다 — 는 rem 기반의 모든 글꼴 크기와 여백 값이 비례하여 커지는 것을 보게 되지만, 픽셀 기반 텍스트는 원래 크기에 고정된 채로 남습니다. 이는 접근성 감사에서 지적하는 바로 그 실패 유형입니다.

사용자가 브라우저의 기본 글꼴 크기를 바꾸면 rem 값에는 어떤 일이 일어나나요?

자동으로 조정됩니다. 루트 글꼴 크기가 브라우저 기본값 그대로 남아 있고 사용자가 그 기본값을 예를 들어 16px 대신 20px로 설정하면, CSS의 모든 1rem은 코드 변경 없이 이제 16px 대신 20px에 해당하게 됩니다. 이는 루트 글꼴 크기 자체가 설정되지 않았거나 상대적으로 정의된 경우에만 작동하며, px로 고정되어 있으면 작동하지 않습니다.

px를 사용해야 할 때도 있나요?

네, 텍스트와 함께 절대 크기가 변하면 안 되는 요소에는 사용해야 합니다: 가는 테두리선, 고정 크기 아이콘, 1px 그림자 등입니다. 대부분의 팀이 따르는 실용적인 규칙은 글꼴 크기와 레이아웃 여백에는 rem을, 컴포넌트에 상대적인 패딩에는 em을, 사용자의 텍스트 크기 설정과 무관하게 시각적으로 일정하게 유지되어야 하는 세부 요소에만 px를 사용하는 것입니다.

댓글

아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!

비슷한 도구