웹 개발자를 위한 고급 SVG 기술

애니메이션, 필터 및 성능 최적화를 포함한 고급 SVG 기술 탐색

웹 개발자를 위한 고급 SVG 기술

SVG의 기본을 마스터했다면, 이제 그래픽을 한 단계 더 발전시킬 수 있는 고급 기술을 탐색할 시간입니다.

성능 향상을 위한 SVG 스프라이트

여러 SVG 파일을 로드하는 대신 스프라이트로 결합하세요:

<svg style="display: none;">
  <symbol id="icon-home" viewBox="0 0 24 24">
    <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
  </symbol>
  <symbol id="icon-user" viewBox="0 0 24 24">
    <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
  </symbol>
</svg>
 
<!-- 아이콘 사용 -->
<svg class="icon">
  <use href="#icon-home"/>
</svg>

SVG에 CSS 애니메이션 적용

CSS를 사용하여 SVG 속성에 애니메이션 적용:

.animated-path {
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  animation: draw 2s forwards;
}
 
@keyframes draw {
  to {
    stroke-dashoffset: 0;
  }
}

시각 효과를 위한 SVG 필터

SVG 필터로 멋진 효과 만들기:

<svg>
  <defs>
    <filter id="glow">
      <feGaussianBlur stdDeviation="4" result="coloredBlur"/>
      <feMerge>
        <feMergeNode in="coloredBlur"/>
        <feMergeNode in="SourceGraphic"/>
      </feMerge>
    </filter>
  </defs>
  <circle cx="50" cy="50" r="30" filter="url(#glow)"/>
</svg>

viewBox로 반응형 SVG 만들기

종횡비를 유지하면서 SVG를 반응형으로 만들기:

<svg viewBox="0 0 100 100" preserveAspectRatio="xMidYMid meet">
  <!-- 내용 -->
</svg>

인라인 SVG vs 외부 파일

인라인 SVG의 장점

  • HTTP 요청 없음
  • CSS로 스타일 지정 가능
  • JavaScript로 애니메이션 가능
  • 중요한 그래픽에 더 적합

외부 SVG의 장점

  • 브라우저 캐싱
  • 페이지 간 재사용 가능
  • 더 깨끗한 HTML
  • 중요하지 않은 그래픽에 더 적합

성능 모범 사례

  1. 경로 복잡도 최소화 - 포인트가 적을수록 렌더링이 빠름
  2. 반복 요소에 <use> 사용 - DOM 크기 감소
  3. SVGO로 최적화 - 불필요한 데이터 제거
  4. 지연 로딩 고려 - 스크롤 아래의 SVG용
  5. CSS 변환 사용 - 하드웨어 가속

접근성 고려사항

SVG를 접근 가능하게 만들기:

<svg role="img" aria-labelledby="title desc">
  <title id="title">회사 로고</title>
  <desc id="desc">흰색 텍스트가 있는 파란색 원</desc>
  <!-- 내용 -->
</svg>

JavaScript 통합

JavaScript로 SVG 조작:

const circle = document.querySelector('circle');
circle.setAttribute('r', 50);
circle.style.fill = 'red';
 
// GSAP 또는 다른 라이브러리로 애니메이션
gsap.to(circle, {
  attr: { r: 100 },
  duration: 1
});

결론

SVG는 무한한 가능성을 가진 강력한 형식입니다. 이러한 고급 기술을 마스터함으로써 웹을 위한 성능이 뛰어나고 접근 가능하며 시각적으로 멋진 그래픽을 만들 수 있습니다.

계속 실험하고 Tiny SVG로 SVG 파일을 최적화하는 것을 잊지 마세요!