HTML5 SVG(Scalable Vector Graphics)
SVG의 개념과 장점(Concept and Advantages of SVG)
SVG(Scalable Vector Graphics)는 XML 기반의 벡터 이미지 포맷으로, 해상도에 독립적인 이미지를 생성하고 조작할 수 있습니다. SVG는 벡터 그래픽이기 때문에 크기를 조정해도 품질이 저하되지 않으며, 자바스크립트와 CSS를 이용하여 스타일링 및 애니메이션 효과를 추가할 수 있습니다.
장점:
- 해상도 독립성: 크기를 조정해도 품질이 저하되지 않음.
- 검색 가능: 텍스트로 저장되어 검색 엔진이 읽을 수 있음.
- 편집 가능: XML 파일이므로 쉽게 편집 가능.
- 상호작용성: 자바스크립트와 CSS를 사용하여 상호작용 및 애니메이션 추가 가능.
SVG 요소와 속성(SVG Elements and Attributes)
SVG는 다양한 도형 요소와 속성을 사용하여 그래픽을 그릴 수 있습니다. 대표적인 SVG 요소는 <svg>
, <rect>
, <circle>
, <ellipse>
, <line>
, <polygon>
등이 있습니다.
예제: SVG 기본 설정
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>SVG 기본 설정</title> </head> <body> <h1>SVG 기본 설정</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <!-- SVG 콘텐츠는 여기에 삽입 --> </svg> </body> </html>
기본 도형 그리기(Drawing Basic Shapes): <rect>
, <circle>
, <ellipse>
, <line>
, <polygon>
예제: 사각형 그리기
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>사각형 그리기</title> </head> <body> <h1>사각형 그리기</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <rect x="50" y="50" width="150" height="100" fill="red" /> </svg> </body> </html>
예제: 원 그리기
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>원 그리기</title> </head> <body> <h1>원 그리기</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <circle cx="200" cy="200" r="50" fill="blue" /> </svg> </body> </html>
예제: 타원 그리기
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>타원 그리기</title> </head> <body> <h1>타원 그리기</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <ellipse cx="200" cy="200" rx="100" ry="50" fill="green" /> </svg> </body> </html>
예제: 선 그리기
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>선 그리기</title> </head> <body> <h1>선 그리기</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <line x1="50" y1="50" x2="350" y2="350" stroke="black" stroke-width="2" /> </svg> </body> </html>
예제: 다각형 그리기
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>다각형 그리기</title> </head> <body> <h1>다각형 그리기</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <polygon points="200,10 250,190 160,210" fill="purple" /> </svg> </body> </html>
SVG를 HTML 문서에 삽입하기(Inserting SVG into HTML Document)
SVG는 여러 가지 방법으로 HTML 문서에 삽입할 수 있습니다.
예제: 인라인 SVG
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>인라인 SVG</title> </head> <body> <h1>인라인 SVG</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <rect x="50" y="50" width="150" height="100" fill="red" /> </svg> </body> </html>
예제: <img>
태그를 사용하여 SVG 삽입
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>img 태그를 사용하여 SVG 삽입</title> </head> <body> <h1>img 태그를 사용하여 SVG 삽입</h1> <img src="path_to_svg_image.svg" alt="SVG 이미지" /> </body> </html>
예제: 배경 이미지로 SVG 사용
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>배경 이미지로 SVG 사용</title> <style> .svg-background { width: 400px; height: 400px; background-image: url('path_to_svg_image.svg'); } </style> </head> <body> <h1>배경 이미지로 SVG 사용</h1> <div class="svg-background"></div> </body> </html>
SVG 애니메이션(SVG Animation)
SVG는 애니메이션을 구현하기 위한 다양한 방법을 제공합니다. CSS 애니메이션과 함께 <animate>
요소를 사용하여 SVG 내부에서 직접 애니메이션을 정의할 수 있습니다.
예제: <animate>
요소를 사용한 애니메이션
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>SVG 애니메이션</title> </head> <body> <h1>SVG 애니메이션</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <circle cx="200" cy="200" r="50" fill="blue"> <animate attributeName="cx" from="50" to="350" dur="5s" repeatCount="indefinite" /> </circle> </svg> </body> </html>
예제: CSS를 사용한 SVG 애니메이션
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>CSS를 사용한 SVG 애니메이션</title> <style> .moving-circle { animation: move 5s infinite alternate; } @keyframes move { from { cx: 50; } to { cx: 350; } } </style> </head> <body> <h1>CSS를 사용한 SVG 애니메이션</h1> <svg width="400" height="400" xmlns="http://www.w3.org/2000/svg"> <circle class="moving-circle" cx="50" cy="200" r="50" fill="blue" /> </svg> </body> </html>
SVG는 HTML5에서 강력한 그래픽 도구로, 해상도에 독립적인 벡터 이미지를 생성하고 조작할 수 있습니다. 다양한 도형을 그리고, 애니메이션을 적용하여 인터랙티브하고 다이나믹한 웹 페이지를 만들 수 있습니다.