Frontend ๐Ÿ“š/HTMLโงตCSS

[HTML] SVG etc.

leejaejae 2024. 7. 12. 18:45

1. SVG๋ž€ โญ๏ธ

  • SVG(Scalable Vector Graphics): ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฒกํ„ฐ ๊ทธ๋ž˜ํ”„
    • ํ”ฝ์…€์„ ์ด์šฉํ•ด ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋Š” png, jpg ํŒŒ์ผ๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฒกํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ํ‘œํ˜„ํ•จ
    • ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•จ์— ๋”ฐ๋ผ ๊นจ์ง€๋Š” ๊ฒƒ์ด ์—†๊ณ , ์šฉ๋Ÿ‰์ด ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์›น์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€ ํ˜•์‹
  • ์žฅ์ 
    • SVG ์ด๋ฏธ์ง€๋Š” ๋งˆํฌ์—…์œผ๋กœ ์“ฐ์ด๋ฏ€๋กœ ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋˜ ์ž‘์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ์Œ
    • ๋ฒกํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ทธ๋ ค์ง€๋ฏ€๋กœ ์‚ฌ์ด์ฆˆ๋ฅผ ํฌ๊ฒŒ ํ•ด๋„ ๊นจ์ง€์ง€ ์•Š์Œ(scalable → ๋”ฐ๋ผ์„œ ์–ด๋–ค ํ•ด์ƒ๋„์—์„œ ์‚ฌ์šฉํ•˜๋“  ๋™์ผ)
    • SVG ๋ฒ„์ „ 1.1์€ 2011๋…„ W3C ํ‘œ์ค€์ด ๋จ
    • XML ํฌ๋งท์œผ๋กœ ํŒŒ์ผ์ด ์ž‘์„ฑ๋˜๋ฏ€๋กœ JS๋‚˜ CSS๋กœ ์กฐ์ž‘์ด ๊ฐ€๋Šฅ
  • ๋‹จ์ 
    • ์ด๋ฏธ์ง€๊ฐ€ ๋ณต์žกํ• ์ˆ˜๋ก SVG๋งŒ์˜ ์žฅ์  ๊ฐ์†Œ
  • Q) SVG ๋‚ด๋ถ€ ๋„ํ˜• ์˜ˆ์‹œ?
  • A) <rect>, <circle>, <polyline>,<path>
    • <path> - ์„ ๊ณผ ๊ณก์„ , ํ˜ธ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ์—˜๋ฆฌ๋จผํŠธ (์ฐธ๊ณ )
// <rect> - ์‚ฌ๊ฐํ˜•
<rect x="10" y="10" width="30" height="30" />
<rect x="60" y="10" rx="10" ry="10" width="30" height="30" />

/*
x - ์‚ฌ๊ฐํ˜•์˜ ์ขŒ์ธก ์ƒ๋‹จ์˜ x ๊ฐ’
y - ์‚ฌ๊ฐํ˜•์˜ ์ขŒ์ธก ์ƒ๋‹จ์˜ y ๊ฐ’
width - ์‚ฌ๊ฐํ˜•์˜ ํญ
height - ์‚ฌ๊ฐํ˜•์˜ ๋†’์ด
rx - ์‚ฌ๊ฐํ˜•์˜ ๋‘ฅ๊ทผ ๊ผญ์ง“์ ์˜ x ๋ฐฉํ–ฅ์œผ๋กœ์˜ ๋ฐ˜์ง€๋ฆ„
ry - ์‚ฌ๊ฐํ˜•์˜ ๋‘ฅ๊ทผ ๊ผญ์ง“์ ์˜ y ๋ฐฉํ–ฅ์œผ๋กœ์˜ ๋ฐ˜์ง€๋ฆ„
*/


//<circle> - ์›
<circle cx="25" cy="75" r="20" />

/*
r - ์›์˜ ๋ฐ˜์ง€๋ฆ„
cx (circle x) - ์›์˜ ์ค‘์‹ฌ ์ค‘ x ๊ฐ’์„ ์˜๋ฏธ
cy (circle y)- ์›์˜ ์ค‘์‹ฌ ์ค‘ y ๊ฐ’์„ ์˜๋ฏธ
*/


// <polyline> - ์—ฐ๊ฒฐ๋œ ์ง์„ ๋“ค์˜ ๊ทธ๋ฃน
<polyline
  points="60 110, 65 120, 70 115, 75 130, 80 125, 85 140, 90 135, 95 150, 100 145"
/>

/*
points - ํฌ์ธํŠธ๋“ค์˜ ๋ชฉ๋ก, ๊ฐ ์ˆซ์ž๋Š” ๊ณต๋ฐฑ, ์‰ผํ‘œ, EOL ๋˜๋Š” ์ค„ ๋ฐ”๊ฟˆ ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋จ
๊ฐ ํฌ์ธํŠธ๋Š” ๋ฐ˜๋“œ์‹œ x ์ขŒํ‘œ์™€ y ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ
๋”ฐ๋ผ์„œ ํฌ์ธํŠธ ๋ชฉ๋ก (0,0), (1,1) ๋ฐ (2,2)๋Š” "0 0, 1 1, 2 2"๋ผ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Œ
*/

 

Tips. 

  • Q) ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ํด ๊ฒฝ์šฐ ๋ Œ๋”๋ง ์†๋„๊ฐ€ ๋Š๋ ค์งˆํ…๋ฐ ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€?
  • A) ์ด๋ฏธ์ง€๋ฅผ ์ตœ์ ํ™” ์‹œํ‚ด(์ด๋ฏธ์ง€์˜ ์šฉ๋Ÿ‰์„ ์ค„์ด๊ธฐ), ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ ํ™œ์šฉ, ๋ฒกํ„ฐ ์ด๋ฏธ์ง€(SVG) ์ด์šฉ
  • Q) UI๋ž€?
  • A) ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค์˜ ์•ฝ์ž๋กœ, ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณดํŽธ์„ฑ์„ ์ง€๋…€์•ผํ•˜๋ฉฐ ์ „์ฒด์ ์œผ๋กœ ์‚ฌ์šฉ์— ์žˆ์–ด ํฐ ๋ถˆํŽธํ•จ์ด ์—†์–ด์•ผ ํ•จ.