HTML, CSS, JavaScript

SVG 파일

망고고래 2025. 3. 12. 11:12

1. 정의

Scalable Vector Graphics

확장 가능한 벡터 그래픽을 나타내는 XML 기반의 파일 형식

이미지를 구성하는 도형과 경로를 정의함 → 확대/축소시 이미지 품질 유지

 

비교 개념: 레스터(jpg, png, gif)

- 픽셀로 구성됨

 

2. 특징

1) 크기 조절 가능성

- 확대/축소시 이미지 해상도 유지

2) 편집 용이성

- 텍스트로 저장

- 텍스트 편집기로 편집 가능

3) 동적 디자인 변경 가능

- CSS 적용

4) 애니메이션 기능

- 내장된 애니메이션 요소가 있음

 

3. 주요 사용처

  • 로고와 아이콘
  • 차트와 그래프
  • 지도

 


4. 코드 내에서 사용

1) 직접 작성

<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
    <circle cx="50" r="400" stroke="black" stroke-width="1" fill="blue"/>
</svg>

 

2) 저장된 svg 파일 사용

<div>
    <img src="test.svg"/>
<div>

 

스타일 조정

//1
img{
    height: 100px;
    width: 100px;
}

//2
<svg preserveAspectRatio="XMaxYMax slice" viewBox="0 0 30 40" width="50" height="30">&Smile;</svg>

//3
<svg width="40" height="40" viewBox="0 0 100 100" fill="yellow">

//4
<svg width="40" height="40" viewBox="0 0 100 100" style="fill: yellow">

 

 

5. 모양 요소

  • 사각형: <rec>
  • 원: <circle>
  • 타원: <ellipse>
  • 선: <line>
  • 다각선: <polyline>
  • 다각형: <polygon>
  • 패스: <path>

1) 기본 스타일 지정

<body>
    <svg width="400" height="110">
        <rect width="300" height="100"/>
    </svg>
</body>

rect{
    fill: rgb(0, 0, 255);
    stroke-width: 3px;
    stroke: rgb(0, 0, 0);
}

 

2) 투명도, 위치값 지정

<body>
    <svg width="400" height="110">
        <rect width="300" height="100" x="100" y="100"/>
    </svg>
</body>

rect{
    fill: rgb(0, 0, 255);
    fill-opacity: 0.2;
    stroke-width: 3px;
    stroke: rgb(0, 0, 0);
    stroke-opacity: 0.5;
}

 

3) 모서리 곡선

<body>
    <svg width="400" height="110">
        <rect width="300" height="100" x="100" y="100" rx="20" ry="20"/>
    </svg>
</body>

rect{
    fill: rgb(0, 0, 255);
    fill-opacity: 0.2;
    stroke-width: 3px;
    stroke: rgb(0, 0, 0);
    stroke-opacity: 0.5;
}

 

rx, ry

 

4) circle

<svg>
    <circle cx="100" cy="100" r="50" fill="blue"/>
</svg>

 

cx, cy: 원 중심의 x좌표와 y좌표

 

5) ellipse

<svg>
    <ellipse cx="200" cy="100" rx="100" ry="50" fill="yellow"/>
</svg>

 

rx: 수평 반경

ry: 수직 반경

 

6) line

<svg>
    <line x1="0" y1="0" x2="100" y2="100"/>
</svg>

 

x1, y1: x축/y축 시작 좌표

x2, y2: x축/y축 끝 좌표

 

 

7) polygon

<svg>
    <polygon points="200,0 250,150 100,210" fill="yellow"/>
</svg>

각각 x1,y1 x2,y2 x3,y3 좌표를 나타냄

 

8) polyline

<svg>
    <polyline points="0,0 20,20 40,40 60,60 80,80" fill="white" stroke="black" stroke-width="1px"/>
</svg>