여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. HTML 그래픽 - 선형 그라디언트

HTML 그래픽 – 선형 그라디언트

3주전 작성

SVG 선형 그라디언트

SVG 그라디언트

그라디언트는 한 색상에서 다른 색상으로의 부드러운 전환을 의미한다. 또한, 동일한 요소에 여러 색상 전환을 적용할 수도 있다.

SVG에는 두 가지 유형의 그라디언트가 있다.

  • 선형 그라디언트 – <linearGradient>로 정의됨
  • 방사형 그라디언트 – <radialGradient>로 정의됨

그라디언트 정의는 <defs> 또는 <svg> 요소 내에 배치된다. <defs> 요소는 “정의”의 약자로, 그라디언트와 같은 특수 요소의 정의를 포함한다.

각 그라디언트는 그라디언트를 식별하는 id 속성을 가져야 한다. 그래픽/이미지는 이후 사용할 그라디언트를 가리킨다.

SVG 선형 그라디언트 – <linearGradient>

<linearGradient> 요소는 선형 그라디언트(한 방향에서 다른 방향으로, 한 색상에서 다른 색상으로의 선형 전환)를 정의하는 데 사용된다.

<linearGradient> 요소는 종종 <defs> 요소 내에 중첩된다.

선형 그라디언트는 수평, 수직 또는 각도 그라디언트로 정의할 수 있다.

  • 수평 선형 그라디언트(기본값)는 왼쪽에서 오른쪽으로 진행한다 (x1과 x2가 다르고 y1과 y2가 동일)
  • 수직 선형 그라디언트는 위에서 아래로 진행한다 (x1과 x2가 동일하고 y1과 y2가 다름)
  • 각도 선형 그라디언트는 x1과 x2가 다르고 y1과 y2가 다를 때 생성된다

수평 선형 그라디언트

노란색에서 빨간색으로 진행하는 수평 선형 그라디언트가 적용된 타원:

<svg height="150" width="400" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad1" x1="0%" x2="100%" y1="0%" y2="0%">
<stop offset="0%" stop-color="yellow" />
<stop offset="100%" stop-color="red" />
</linearGradient>
</defs>
<ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad1)" />
</svg>

코드 설명:

  • <linearGradient> 요소의 id 속성은 그라디언트의 고유한 이름을 정의한다.
  • <linearGradient> 요소의 x1, x2, y1, y2 속성은 그라디언트의 시작점과 끝점의 x와 y 좌표를 정의한다.
  • 그라디언트의 색상은 두 개 이상의 <stop> 요소로 정의된다.
  • <stop>의 stop-color 속성은 그라디언트 정지점의 색상을 정의한다.
  • <stop>의 offset 속성은 그라디언트 정지점이 위치하는 곳을 정의한다.
  • <ellipse> 요소의 fill 속성은 해당 요소를 “grad1” 그라디언트로 가리킨다.

다중 색상 수평 선형 그라디언트

노란색에서 녹색을 거쳐 빨간색으로 진행하는 수평 선형 그라디언트가 적용된 타원:

<svg height="150" width="400" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad2" x1="0%" x2="100%" y1="0%" y2="0%">
<stop offset="0%" stop-color="yellow" />
<stop offset="50%" stop-color="green" />
<stop offset="100%" stop-color="red" />
</linearGradient>
</defs>
<ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad2)" />
</svg>

수직 선형 그라디언트

노란색에서 빨간색으로 진행하는 수직 선형 그라디언트가 적용된 타원:

<svg height="150" width="400" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad3" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="yellow" />
<stop offset="100%" stop-color="red" />
</linearGradient>
</defs>
<ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad3)" />
</svg>

텍스트가 포함된 수평 선형 그라디언트

노란색에서 빨간색으로 진행하는 수평 선형 그라디언트가 적용된 타원과 내부에 텍스트 추가:

SVG

<svg height="150" width="400" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad4" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="yellow" />
<stop offset="100%" stop-color="red" />
</linearGradient>
</defs>
<ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad4)" />
<text fill="#ffffff" font-size="45" font-family="Verdana" x="50" y="86">SVG</text>
</svg>

코드 설명:

<text> 요소는 텍스트를 추가하는 데 사용한다.

각도 선형 그라디언트

노란색에서 빨간색으로 진행하는 각도 선형 그라디언트가 적용된 타원:

<svg height="150" width="400" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad5" x1="0%" y1="100%" x2="100%" y2="0%">
<stop offset="0%" stop-color="yellow" />
<stop offset="100%" stop-color="red" />
</linearGradient>
</defs>
<ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad5)" />
</svg>

SVG <linearGradient> 속성

속성 설명
id 필수. <linearGradient> 요소의 고유 ID를 정의한다.
x1 벡터 그라디언트의 시작 지점의 x 위치. 기본값은 0%.
x2 벡터 그라디언트의 끝 지점의 x 위치. 기본값은 100%.
y1 벡터 그라디언트의 시작 지점의 y 위치. 기본값은 0%.
y2 벡터 그라디언트의 끝 지점의 y 위치. 기본값은 0%.
spreadMethod 그라디언트의 확산 방법을 정의한다. 가능한 값: “pad”, “reflect”, “repeat”. 기본값은 “pad”.
href 템플릿으로 사용될 다른 <linearGradient> 요소에 대한 참조를 정의한다.
gradientUnits x1, x2, y1, y2에 대한 좌표 시스템을 정의한다. 가능한 값: “userSpaceOnUse”와 “objectBoundingBox”. 기본값은 “objectBoundingBox”.
gradientTransform 그라디언트 좌표 시스템에 추가 변환을 정의한다.

💡 SVG 그라디언트 고급 팁:
• 다양한 offset 값을 활용하여 그라디언트 분포 조정
• spreadMethod 속성으로 그라디언트 반복 패턴 생성
• gradientTransform으로 회전, 크기 조정, 기울기 적용
• href 속성을 사용해 그라디언트 정의 재사용 및 확장

참고
Mingg`s Diary
밍구
공부 목적 블로그