궁금한점 210616 - ChoDragon9/posts GitHub Wiki
전역에 영향을 줌. HTML과 동일함.
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
<style>
circle {
fill: gold;
stroke: maroon;
stroke-width: 2px;
}
</style>
<script>
const add = (a, b) => a + b;
</script>
<circle cx="50" cy="50" r="50" />
</svg>
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
<script>
console.log(add(5, 5));
</script>
<circle cx="50" cy="50" r="50" />
</svg>
-
<symbol>
은 도형을 만들어서 재사용함. -
<defs>
는 스토어를 만들어서 내부에 엘리먼트 저장 후 재사용함.
<path>
는 <circle>
, <line>
, <polygon>
, <polyline>
, <rect>
을 대체 가능.
<svg width="100%" height="100" xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="50" />
<path d="M 100 50
A 50 50, 0, 0, 0, 200 50
A 50 50, 0, 0, 0, 100 50
Z"
/>
</svg>
<svg width="100%" height="100" xmlns="http://www.w3.org/2000/svg">
<line x1="0" y1="50" x2="100" y2="50" stroke="black" />
<path d="M 100 50
H 200
Z"
stroke="gray"
/>
</svg>
<svg width="100%" height="100" xmlns="http://www.w3.org/2000/svg">
<polygon points="25 25, 25 75, 75 75, 75 25" />
<path d="M 125 25
V 75
H 175
V 25
Z"
/>
</svg>
<svg width="100%" height="100" xmlns="http://www.w3.org/2000/svg">
<polyline points="25 25, 25 75, 75 75, 75 25"
fill="none"
stroke="black"
/>
<path d="M 125 25
V 75
H 175
V 25
"
fill="none"
stroke="black"
/>
</svg>
<svg width="100%" height="100" xmlns="http://www.w3.org/2000/svg">
<rect x="25" y="25" width="50" height="50" />
<path d="M 125 25
V 75
H 175
V 25
Z"
/>
</svg>
@namespace
는 CSS 스타일 시트에서 사용되는 XML 네임스페이스를 정의.
@namespace url(http://www.w3.org/1999/xhtml);
@namespace svg url(http://www.w3.org/2000/svg);
/* 이는 모든 XHTML <a> 요소와 일치합니다, XHTML이 접두어 붙지 않은 기본 네임스페이스이기에 */
a {}
/* 이는 모든 SVG <a> 요소와 일치합니다 */
svg|a {}
/* 이는 XHTML 및 SVG <a> 요소 둘 다와 일치합니다 */
*|a {}
https://developer.mozilla.org/en-US/docs/Web/SVG/Namespaces_Crash_Course
XML 엘리먼트가 중복되는 것을 방지한다. HTML과 SVG의 중복 엘리먼트가 있을 경우가 있기 때문이다.