728x90
๋ฐ์ํ
SVG
์ค์ผ์ผ๋ฌ๋ธ ๋ฒกํฐ ๊ทธ๋ํฝ์ค(Scalable Vector Graphics, SVG)๋ 2์ฐจ์ ๋ฒกํฐ ๊ทธ๋ํฝ์ ํํํ๊ธฐ ์ํ XML ๊ธฐ๋ฐ์ ํ์ผ ํ์์ผ๋ก,
1999๋
W3C (World Wide Web Consortium)์ ์ฃผ๋ํ์ ๊ฐ๋ฐ๋ ์คํ ํ์ค์ ๋ฒกํฐ ๊ทธ๋ํฝ ํ์ผ ํ์์
๋๋ค.
SVG ํ์์ ์ด๋ฏธ์ง์ ๊ทธ ์๋์ XML ํ
์คํธ ํ์ผ๋ค๋ก ์ ์๋์ด ๊ฒ์ํยท๋ชฉ๋กํยท์คํฌ๋ฆฝํธํ๊ฐ ๊ฐ๋ฅํ๋ฉฐ ํ์ํ๋ค๋ฉด ์์ถ๋ ๊ฐ๋ฅํฉ๋๋ค.
- ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ9 ๋ฒ์ ์ด์๋ถํฐ ์ง์๋ฉ๋๋ค.
- XML์ ์ด์ฉํ์ฌ ๋ผ์ธ, ๊ณก์ , ๊ธฐํํ์ ์ธ ๊ทธ๋ํฝ ํํ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋ฒกํฐ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ํ๋ํ๊ฑฐ๋ ์ถ์๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- DOM ๋จ์๋ก ์ปจํธ๋กค์ด ๊ฐ๋ฅํ์ง๋ง ๋ฌธ์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐ๋๋ฉด ๋ ๋๋ง์ด ๋๋ ค์ง๋๋ค.
์ฌ๊ฐํ(rect)
svg
<div class="svgBox svg1"> <svg> <rect fill="#F48FB1" width="100" height="100" x="30" y="30" /> </svg> <svg> <rect fill="#F48FB1" width="100" height="100" x="30" y="30" stroke="#880E4F" stroke-width="5" /> </svg> <svg> <rect fill="#F48FB1" width="100" height="100" x="30" y="30" rx="20" ry="20" /> </svg> <svg> <rect fill="#F48FB1" width="100" height="100" x="30" y="30" rx="20" ry="20" stroke="#880E4F" stroke-width="5" /> </svg> <svg> <rect fill="#F48FB1" width="100" height="100" x="30" y="30" rx="40" ry="40" /> </svg> <svg> <rect fill="#F48FB1" width="100" height="100" x="30" y="30" rx="60" ry="60" stroke="#880E4F" stroke-width="5" /> </svg> </div>
์ํ(circle, ellipse)
svg
<div class="svgBox svg2"> <svg> <circle fill="#F48FB1" r="60" cx="80" cy="80" /> </svg> <svg> <circle fill="#F48FB1" r="60" cx="80" cy="80" stroke="#880E4F" stroke-width="5" /> </svg> <svg> <ellipse fill="#F48FB1" rx="60" ry="40" cx="80" cy="80" /> </svg> <svg> <ellipse fill="#F48FB1" rx="60" ry="40" cx="80" cy="80" stroke="#880E4F" stroke-width="5" /> </svg> <svg> <ellipse fill="#F48FB1" rx="40" ry="60" cx="80" cy="80" /> </svg> <svg> <ellipse fill="#F48FB1" rx="40" ry="60" cx="80" cy="80" stroke="#880E4F" stroke-width="5" /> </svg> </div>
๋ค๊ฐํ(polygon)
svg
<div class="svgBox svg3"> <svg> <polygon points="136,141 10,101 108,12" fill="#F48FB1" /> </svg> <svg> <polygon points="121,131 56,140 15,89 39,27 104,18 145,70" fill="#F48FB1"/> </svg> <svg> <polygon points="115,134 71,144 30,124 12,82 26,39 64,14 108,20 139,53 142,98" fill="#F48FB1" /> </svg> <svg> <polygon points="133,129 87,115 50,144 49,96 9,70 54,54 67,8 96,47 144,45 116,84" fill="#F48FB1" /> </svg> <svg> <polygon points="128,130 94,111 88,149 73,114 45,141 53,104 15,110 44,84 10,66 48,62 30,28 64,47 70,9 85,45 113,17 105,55 143,49 114,75 148,92 110,96" fill="#F48FB1" /> </svg> <svg> <polygon points="80,8.15 81.84,70.37 106.02,13.02 85.26,71.69 128.53,26.96 87.98,74.17 144.49,48.08 89.62,77.46 151.73,73.55 89.96,81.12 149.29,99.91 88.95,84.65 137.49,123.61 86.74,87.59 117.93,141.45 83.61,89.52 93.24,151.01 80,90.2 66.76,151.01 76.39,89.52 42.07,141.45 73.26,87.59 22.51,123.61 71.05,84.65 10.71,99.91 70.04,81.12 8.27,73.55 70.38,77.46 15.51,48.08 72.02,74.17 31.47,26.96 74.74,71.69 53.98,13.02 78.16,70.37" fill="#F48FB1" /> </svg> </div>
ํจ์ค(path)
svg
<div class="svgBox svg4"> <svg class="svg"> <path fill="none" stroke="#880E4F" stroke-width="2" d="M7,154.667c0-82.358,65.152-149,145.667-149"/> </svg> <svg class="svg"> <path fill="none" stroke="#880E4F" stroke-width="2" d="M151.534,123.547c-33.711,33.711-88.369,33.711-122.08,0 c-26.97-26.969-26.97-70.695,0-97.665c21.575-21.576,56.556-21.576,78.131,0c17.261,17.26,17.261,45.245,0.001,62.504 c-13.809,13.809-36.196,13.809-50.005,0c-11.046-11.046-11.046-28.956,0-40.002c8.837-8.837,23.166-8.837,32.003,0 c7.069,7.07,7.07,18.532,0,25.602c-5.656,5.657-14.826,5.657-20.482,0c-4.524-4.524-4.524-11.86,0-16.385"/> </svg> <svg class="svg"> <path fill="none" stroke="#880E4F" stroke-width="2" d="M82.671,81.243c50.565,48.259,14.182,69.191-2.135,1.229 c16.316,67.962-25.611,65.895-2.46-0.122c-23.151,66.017-57.304,41.617-2.004-1.432c-55.3,43.049-70.84,4.057-0.912-2.288 c-69.929,6.345-61.919-34.86,0.47-2.417c-62.389-32.442-33.374-62.777,1.703-1.78c-35.076-60.997,5.73-70.826,2.395-0.577 c3.335-70.249,42.981-56.458,2.326,0.81c40.655-57.268,66.554-24.232,1.521,1.938c65.033-26.17,68.953,15.62,0.23,2.452 C152.526,92.225,133.236,129.502,82.671,81.243z"/> </svg> <svg class="svg"> <path fill="none" stroke="#880E4F" stroke-width="2" d="M131.502,129.683c-44.4-42.871-49.621-39.867-34.943,20.102 c-14.678-59.969-20.694-60.265-40.261-1.983c19.566-58.281,14.666-61.783-32.799-23.436C70.963,86.018,68.733,80.421,8.573,86.918 c60.16-6.497,61.31-12.409,7.692-39.569c53.617,27.16,57.781,22.808,27.864-29.131c29.917,51.938,35.772,50.527,39.189-9.441 c-3.417,59.969,2.272,61.948,38.075,13.245c-35.803,48.703-32.086,53.443,24.869,31.726C89.308,75.465,89.87,81.462,150.03,93.884 C89.87,81.462,87.102,86.812,131.502,129.683z"/> </svg> <svg class="svg"> <path fill="none" stroke="#880E4F" stroke-width="2" d="M58.665,139.312c0-6.873,42-6.873,42-13.747s-42-6.874-42-13.748 s42-6.874,42-13.748c0-6.872-42-6.872-42-13.744c0-6.874,42-6.874,42-13.747c0-6.877-42-6.877-42-13.753 c0-6.874,42-6.874,42-13.748c0-6.878-42-6.878-42-13.757s42-6.879,42-13.758"/> </svg> <svg class="svg"> <path fill="none" stroke="#880E4F" stroke-width="2" d="M93.108,91.478c42.049,30.58-13.048,57.425-13.347,6.503 c0.299,50.922-55.041,24.58-13.405-6.381c-41.636,30.961-55.545-28.728-3.37-14.458c-52.176-14.27-14.181-62.359,9.204-11.649 c-23.385-50.71,37.901-50.989,14.846-0.067c23.055-50.922,61.484-3.179,9.309,11.565C148.521,62.245,135.157,122.058,93.108,91.478 z"/> </svg> </div>
๋ผ์ธ(line, polyline)
svg
<div class="svgBox svg5"> <svg> <line x1="0" y1="0" x2="200" y2="200" stroke="#0D47A1" stroke-width="2" fill="none" /> </svg> <svg> <line x1="50" y1="50" x2="200" y2="200" stroke="#0D47A1" stroke-width="2" fill="none" /> </svg> <svg> <line x1="100" y1="100" x2="200" y2="200" stroke="#0D47A1" stroke-width="2" fill="none" /> </svg> <svg> <polyline points="21,17.2 21,139.2 117,52.2" stroke="#0D47A1" stroke-width="2" fill="none" /> </svg> <svg> <polyline points="21,17.2 21,139.2 122,28.2 141,139.2" stroke="#0D47A1" stroke-width="2" fill="none" /> </svg> <svg> <polyline points="21,17.2 21,139.2 122,28.2 141,139.2 23.5,11.7" stroke="#0D47A1" stroke-width="2" fill="none" /> </svg> </div>
ํด๋ฆฌํ ๋ง์คํฌ(Clip-path)
svg
<div class="svgBox svg6"> <svg> <image xlink:href="img/animation01.jpg" width="160" height="160" /> </svg> <svg> <image xlink:href="img/animation01.jpg" width="160" height="160" clip-path="circle(60px at center)" /> </svg> <svg> <clipPath id="clipPath1"> <polygon points="136,141 10,101 108,12" /> </clipPath> <image xlink:href="img/animation01.jpg" width="160" height="160" clip-path="url(#clipPath1)" /> </svg> <svg> <clipPath id="clipPath2"> <polygon points="121,131 56,140 15,89 39,27 104,18 145,70" /> </clipPath> <image xlink:href="img/animation01.jpg" width="160" height="160" clip-path="url(#clipPath2)" /> </svg> <svg> <clipPath id="clipPath3"> <polygon points="133,129 87,115 50,144 49,96 9,70 54,54 67,8 96,47 144,45 116,84" /> </clipPath> <image xlink:href="img/animation01.jpg" width="160" height="160" clip-path="url(#clipPath3)" /> </svg> <svg> <clipPath id="clipPath4"> <polygon points="128,130 94,111 88,149 73,114 45,141 53,104 15,110 44,84 10,66 48,62 30,28 64,47 70,9 85,45 113,17 105,55 143,49 114,75 148,92 110,96" /> </clipPath> <image xlink:href="img/animation01.jpg" width="160" height="160" clip-path="url(#clipPath4)" /> </svg> </div>
ํด๋ฆฌํ ๋ง์คํฌ(Clip-path)
svg
SVG
SVG
SVG
SVG
<div class="svgBox svg7"> <svg> <text fill="#F48FB1" x="7" y="110" font-family="SCoreDream" font-size="70" font-weight="900">SVG</text> </svg> <svg> <pattern id="pattern1" patternunites="useSpaceOuUse" width="100%" height="100%"> <image xlink:href="img/animation01.jpg" width="160" height="160" /> </pattern> <text fill="url(#pattern1)" x="7" y="110" font-family="SCoreDream" font-size="70" font-weight="900">SVG</text> </svg> <div class="text-wrap"> <div class="text-clip">SVG</div> </div> <div class="text-wrap"> <div class="text-clip c2">SVG</div> </div> <div class="text-wrap"> <div class="text-clip c3">SVG</div> </div> <div class="text-wrap"> <div class="text-clip c4">SVG</div> </div> </div>
์ ๋๋ฉ์ด์
svg
<div class="svgBox svg8"> <svg> <rect class="ani1"></rect> </svg> <svg> <rect class="ani2"></rect> </svg> <svg style="background: #E3F3FD"> <path class="ani3" fill="none" stroke="#0D47A1" stroke-width="2" d="M7,154.667c0-82.358,65.152-149,145.667-149" /> </svg> <svg style="background: #E3F3FD"> <path class="ani4" fill="none" stroke="#0D47A1" stroke-width="2" d="M151.534,123.547c-33.711,33.711-88.369,33.711-122.08,0 c-26.97-26.969-26.97-70.695,0-97.665c21.575-21.576,56.556-21.576,78.131,0c17.261,17.26,17.261,45.245,0.001,62.504 c-13.809,13.809-36.196,13.809-50.005,0c-11.046-11.046-11.046-28.956,0-40.002c8.837-8.837,23.166-8.837,32.003,0 c7.069,7.07,7.07,18.532,0,25.602c-5.656,5.657-14.826,5.657-20.482,0c-4.524-4.524-4.524-11.86,0-16.385" /> </svg> <svg style="background: #E3F3FD"> <path class="ani5" fill="none" stroke="#0D47A1" stroke-width="2" d="M58.665,139.312c0-6.873,42-6.873,42-13.747s-42-6.874-42-13.748 s42-6.874,42-13.748c0-6.872-42-6.872-42-13.744c0-6.874,42-6.874,42-13.747c0-6.877-42-6.877-42-13.753 c0-6.874,42-6.874,42-13.748c0-6.878-42-6.878-42-13.757s42-6.879,42-13.758" /> </svg> <svg style="background: #E3F3FD"> <path class="ani6" fill="none" stroke="#0D47A1" stroke-width="2" d="M93.108,91.478c42.049,30.58-13.048,57.425-13.347,6.503 c0.299,50.922-55.041,24.58-13.405-6.381c-41.636,30.961-55.545-28.728-3.37-14.458c-52.176-14.27-14.181-62.359,9.204-11.649 c-23.385-50.71,37.901-50.989,14.846-0.067c23.055-50.922,61.484-3.179,9.309,11.565C148.521,62.245,135.157,122.058,93.108,91.478 z" /> </svg> </div>
728x90
๋ฐ์ํ
'CSS > Animation' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฑธ์ด๊ฐ์ (3) | 2022.09.08 |
---|---|
CSS animation (3) | 2022.09.08 |
์ ๋๋ฉ์ด์ ํจ๊ณผ _ ๋ฌดํ๋ ๊ณต (5) | 2022.09.05 |
์ ๋๋ฉ์ด์ ๋น๊ธ๋น๊ธ (5) | 2022.08.29 |
์ ๋๋ฉ์ด์ ๋ฐ์ค (5) | 2022.08.29 |
๋๊ธ