SVG viewBox가 없어 아이콘이 잘리거나 작게 보일 때 고치는 방법
SVG가 잘리면 viewBox를 `min-x min-y width height` 형식으로 넣고 실제 path뿐 아니라 stroke와 filter가 차지하는 범위까지 포함하세요. 반대로 아이콘이 너무 작으면 viewBox 안의 불필요한 빈 좌표 여백을 줄이고, 표시 크기는 width·height 또는 CSS로 따로 지정해야 합니다.
SVG의 화면 크기와 내부 좌표 범위는 서로 다른 개념입니다. 파일에 24px 크기를 줘도 viewBox가 도형보다 지나치게 넓으면 아이콘은 작아지고, 범위가 좁으면 선 끝이나 그림자가 잘릴 수 있습니다.
먼저 보는 핵심 요약
- viewBox 네 값은 내부 좌표계의 시작점과 보이는 영역의 너비·높이를 정합니다.
- 도형 경계만 딱 맞추면 굵은 stroke, 둥근 선 끝, blur와 shadow가 영역 밖에서 잘릴 수 있습니다.
- 내부 좌표를 정리한 뒤 CSS 표시 크기와 preserveAspectRatio 동작을 실제 컨테이너에서 확인합니다.
viewBox 네 값이 화면에 미치는 영향
viewBox의 첫 두 값은 보이는 좌표의 시작점이고 뒤의 두 값은 내부 영역의 너비와 높이입니다. 브라우저는 이 좌표 영역을 SVG viewport에 맞춰 확대하거나 축소합니다. path가 음수 좌표를 사용하거나 원점에서 떨어져 있으면 `0 0`만 가정했을 때 일부가 잘리거나 한쪽으로 치우칠 수 있습니다.
아이콘이 같은 CSS 크기인데 작아 보이는 이유
도형 주위에 큰 빈 공간이 포함된 viewBox는 빈 공간까지 함께 축소해 viewport에 넣습니다. 그래서 width와 height가 같은 다른 아이콘보다 실제 획이 작게 보입니다. 편집기의 페이지 크기와 아트워크 경계를 비교하고, 의도한 안전 여백을 제외한 불필요한 좌표만 줄이세요.
stroke와 filter 때문에 생기는 가장자리 잘림
path의 기하학적 경계 밖으로 stroke 절반이 확장될 수 있고 linecap이나 linejoin 모양도 더 튀어나옵니다. blur, drop shadow 같은 filter는 추가 영역을 사용합니다. path 경계에 정확히 맞춘 viewBox보다 효과가 실제로 차지하는 만큼 여유를 둔 뒤 여러 배율에서 확인해야 합니다.
반응형 크기와 종횡비를 함께 맞추는 법
viewBox가 있으면 CSS로 너비만 바꿔도 내부 좌표를 비례해서 표시할 수 있습니다. 컨테이너 비율과 viewBox 비율이 다를 때는 preserveAspectRatio 설정에 따라 여백이 생기거나 잘라 채울 수 있습니다. 로고처럼 변형되면 안 되는 자산은 비율 유지 상태를 명시적으로 점검하세요.
단계별로 확인하는 방법
- 실제 도형 좌표 확인하기
path, shape, group 변환을 포함해 아트워크의 최소·최대 좌표와 음수 좌표 사용 여부를 확인합니다.
- 효과 여백 더하기
stroke 두께, linecap, filter와 shadow가 도형 바깥으로 확장되는 범위를 반영합니다.
- viewBox와 표시 크기 분리하기
내부 좌표는 viewBox로 정하고 화면 크기는 width·height 또는 CSS에서 지정합니다.
- 여러 컨테이너에서 검수하기
정사각형과 비정사각형 영역, 작은 아이콘 크기와 고배율에서 잘림·치우침·왜곡을 확인합니다.
판단 기준을 한눈에 비교하기
| 확인 항목 | 판단 기준 |
|---|---|
| 가장자리가 잘림 | viewBox가 도형·stroke·filter 범위보다 좁은지 확인합니다. |
| 아이콘만 유독 작음 | viewBox 내부의 불필요한 빈 좌표 공간을 줄입니다. |
| 한쪽으로 치우침 | min-x·min-y와 group transform, 음수 좌표를 함께 확인합니다. |
| 컨테이너마다 여백이 다름 | viewBox와 viewport 비율 및 preserveAspectRatio 설정을 점검합니다. |
실행 전 체크리스트
- viewBox가 네 개의 유효한 숫자로 선언됐나요?
- stroke와 filter가 차지하는 바깥 영역을 포함했나요?
- 불필요한 아트보드 여백을 제거했나요?
- CSS 크기와 다양한 종횡비에서 결과를 확인했나요?
주의할 점
최적화 과정에서 단순히 path 경계에 viewBox를 맞추면 시각 효과가 잘릴 수 있습니다. 로고의 보호 여백처럼 디자인상 의도된 공간까지 제거하지 말고, 원본과 작은 크기의 실제 렌더링을 함께 비교하세요.
함께 보면 좋은 글
자주 묻는 질문
viewBox가 있으면 width와 height는 없어도 되나요?
CSS나 부모 레이아웃이 크기를 정한다면 가능하지만 기본 표시 크기와 레이아웃 안정성을 위해 사용 환경에 맞는 크기 규칙을 제공하는 편이 좋습니다.
viewBox의 width와 height에 px을 붙이나요?
아닙니다. viewBox 값은 내부 사용자 좌표를 나타내는 숫자이며 CSS 길이 단위를 붙이지 않습니다.
path의 getBBox 값만 쓰면 항상 맞나요?
기본 기하 경계만으로는 stroke와 일부 filter 효과가 차지하는 영역이 빠질 수 있습니다. 실제 렌더링까지 확인해 여백을 보정하세요.
아이콘을 꽉 채우려고 preserveAspectRatio를 none으로 써도 되나요?
비율이 다른 컨테이너에서는 도형이 늘어나거나 눌릴 수 있습니다. 의도적인 변형이 아니라면 종횡비를 유지하는 설정이 보통 적합합니다.
근거와 출처
- W3C SVG 2 명세 — 1차 출처, 조회일 2026-08-30
- MDN SVG viewBox 속성 문서 — 보조 출처, 조회일 2026-08-30
도구에서 직접 확인하기
설명한 기준을 실제 값에 적용하려면 SVG 최적화 도구에서 작은 샘플부터 확인하세요. 원본과 결과를 나란히 비교한 뒤 실제 사용 환경에 적용하는 순서가 가장 안전합니다.
이 글은 알파카랩스 Utils의 이미지 및 문서 도구와 함께 보는 정보성 가이드입니다. 규격과 외부 서비스 정책은 바뀔 수 있으므로 중요한 결정 전에는 연결된 공식 출처의 최신 내용을 다시 확인하세요.