SVG 필터는 단순한 이미지를 창의적으로 변환하여 독특한 그래픽 효과를 추가할 수 있는 강력한 도구입니다. 그림자, 블러, 색상 변환 등을 포함한 SVG 필터는 CSS와 조합하여 동적인 효과를 구현할 수 있으며, 이미지와 텍스트 모두에 활용할 수 있습니다. 이번 포스팅에서는 SVG 필터의 기본 사용법과 이를 활용한 창의적인 그래픽 효과 구현 방법을 살펴보겠습니다.
1. SVG 필터의 기본 구조
SVG 필터는 <filter> 요소를 사용하여 정의되며, 여러 필터 프리미티브 요소를 포함할 수 있습니다. 이 필터를 특정 SVG 요소에 적용하려면 filter 속성을 사용합니다.
기본 구조 예제
<svg xmlns="<http://www.w3.org/2000/svg>" width="200" height="200">
<defs>
<filter id="blurEffect">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
</filter>
</defs>
<rect x="10" y="10" width="180" height="180" fill="blue" filter="url(#blurEffect)" />
</svg>
위 코드는 feGaussianBlur를 사용하여 블러 효과를 적용한 사각형을 렌더링합니다. stdDeviation 속성으로 블러 강도를 조정할 수 있습니다.
2. SVG 필터를 활용한 주요 그래픽 효과
(1) 그림자 효과 (Drop Shadow)
그림자 효과는 feDropShadow를 사용하여 구현할 수 있습니다. 텍스트나 도형에 깊이를 더해 시각적 입체감을 제공합니다.
<filter id="shadowEffect"> <feDropShadow dx="5" dy="5" stdDeviation="3" flood-color="black" flood-opacity="0.5" /> </filter>
속성 설명:
- dx, dy: 그림자의 X, Y 오프셋
- stdDeviation: 그림자의 블러 강도
- flood-color: 그림자의 색상
- flood-opacity: 그림자의 투명도
(2) 블러 효과 (Blur)
블러 효과는 feGaussianBlur를 사용하며, 이미지나 배경의 특정 영역을 부드럽게 처리할 때 유용합니다.
<filter id="softBlur"> <feGaussianBlur in="SourceGraphic" stdDeviation="10" /> </filter>
(3) 색상 변환 (Color Transformation)
feColorMatrix를 사용하여 색상을 변환하거나 흑백 효과를 적용할 수 있습니다.
<filter id="grayscaleEffect">
<feColorMatrix type="matrix" values="0.33 0.33 0.33 0 0
0.33 0.33 0.33 0 0
0.33 0.33 0.33 0 0
0 0 0 1 0" />
</filter>
활용 팁:
- 이미지의 주 색상을 변경하거나 필름 느낌의 효과를 만들 때 유용합니다.
3. SVG 필터와 CSS의 결합
SVG 필터는 CSS를 통해 HTML 요소에 직접 적용할 수도 있습니다. 이 방식은 SVG 파일 없이도 동적인 필터 효과로 그래픽 효과 구현할 수 있는 장점이 있습니다.
예제: CSS에서 SVG 필터 사용
<svg xmlns="<http://www.w3.org/2000/svg>" width="0" height="0">
<defs>
<filter id="hoverShadow">
<feDropShadow dx="5" dy="5" stdDeviation="3" flood-color="red" />
</filter>
</defs>
</svg>
<div class="button" style="filter: url(#hoverShadow);">Hover Me</div>
CSS와의 결합
.button:hover {
filter: url(#hoverShadow);
}
4. SVG 필터 활용 사례
사례 1: 버튼 효과
SVG 필터를 사용하여 버튼에 생동감을 부여합니다.
<svg xmlns="<http://www.w3.org/2000/svg>" width="200" height="50">
<defs>
<filter id="buttonEffect">
<feOffset dx="2" dy="2" />
<feGaussianBlur stdDeviation="2" />
<feMerge>
<feMergeNode />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
</defs>
<rect x="0" y="0" width="200" height="50" fill="orange" filter="url(#buttonEffect)" />
</svg>
사례 2: 배경 그래픽
배경 이미지를 부드럽게 처리하여 콘텐츠를 돋보이게 만듭니다.
<svg xmlns="<http://www.w3.org/2000/svg>" width="100%" height="100%">
<filter id="backgroundBlur">
<feGaussianBlur stdDeviation="15" />
</filter>
</svg>
5. SVG 필터 사용 시 주의사항
- 브라우저 호환성: 최신 브라우저는 대부분 지원하지만, 구형 브라우저에서는 일부 효과가 정상적으로 작동하지 않을 수 있습니다.
- 성능 최적화: 복잡한 필터는 렌더링 성능에 영향을 미칠 수 있으므로 필요한 범위 내에서만 사용합니다.
- 접근성: 강한 블러나 색상 변환 효과는 시각적으로 불편할 수 있으므로 사용자 경험을 고려하여 디자인합니다.
SVG 필터는 단순한 요소를 그래픽 효과를 이용해 창의적인 비주얼로 탈바꿈시키는 강력한 도구입니다. 다양한 필터를 실험하며 웹 디자인의 매력을 한층 높여보세요.









