웹 환경에서 SVG 더 잘 이해하고 사용하기
이 글에서 다루는 내용
이 글은 SVG(Scalable Vector Graphic)에 대한 전반적인 내용을 다룹니다. SVG의 정의와 특징, 그 리고 왜 웹 환경에서 널리 사용되는지에 대한 이유를 설명하며 시작합니다. 이어서 SVG의 장단점을 분석하고, 실제로 SVG를 사용하는 다양한 방법들을 예제로 소개합니다. 또한, SVG를 최적화하는 기술과 자동화 도구를 활용한 효율적인 관리 방안도 다룹니다.
마지막으로, SVG를 디자인 시스템과 개발 프로세스에서 중요한 자원으로써 체계적으로 관리하는 방법까지 탐구해봅니다. 이 글을 통해 SVG를 더 잘 이해하고 실무에서 효과적으로 활용할 수 있는 다양한 인사이트를 얻을 수 있길 바랍니다.
SVG란 무엇이고 왜 많이 사용될까?
SVG: Scalable Vector Graphics | MDN
SVG(Scalable Vector Graphic)는 XML 기반의 벡터 그래픽 파일 형식으로, 선, 도형, 텍스트를 수학적 정의를 통해 표현합니다. 이 특징 덕분에 해상도와 관계없이 선명하게 렌더링되며, 웹 환경에서 특히 많이 사용됩니다.
SVG가 많이 사용되는 이유와 장점
-
해상도 독립성
벡터 기반으로 작동하여 크기를 키우거나 줄여도 품질 저하가 없습니다.
-
파일 크기 효율성
복잡하지 않은 그래픽의 경우 비트맵 이미지(PNG, JPG)보다 용량이 작아 웹 페이지 로딩 속도를 개선할 수 있습니다.
-
스타일링과 인터랙션의 유연성
CSS와 JavaScript를 통해 동적으로 스타일을 변경하거나 애니메이션을 적용할 수 있습니다.
-
SEO와 접근성 지원
XML 구조 덕분에 검색 엔진에서 인덱싱할 수 있고, 스크린 리더와 같은 접근성 도구와의 호환성이 좋습니다.
-
크로스 플랫폼 호환성
주요 브라우저와 모든 디바이스에서 별도 플러그인 없이 사용할 수 있습니다.
SVG의 단점
-
복잡한 이미지 표현의 비효율성
사진처럼 픽셀 단위의 세부 묘사가 필요한 경우, SVG는 비효율적이며 용량이 커질 수 있습니다.
-
보안 취약성(XML Injection)
외부 입력을 통해 악성 코드가 삽입될 가능성이 있으므로, 신뢰할 수 없는 SVG는 반드시 sanitize 처리가 필요합니다.
// **SVG Sanitization**: 신뢰할 수 없는 SVG를 로드할 때 DOMPurify와 같은 도구를 활용해 잠재적 위협 요소를 제거.
import DOMPurify from "dompurify";
const sanitizedSVG = DOMPurify.sanitize(rawSVG); -
브라우저 렌더링 성능 이슈
지나치게 복잡한 SVG는 렌더링 성능 저하를 일으킬 수 있습니다.