ãã®èšäºã§ã¯ãSVGã°ã©ãã£ãã¯ã¹ãSVGã¢ãã¡ãŒã·ã§ã³ïŒãã¹ãå«ãïŒãåé¡ãšè§£æ±ºçãããã³å€ãã®SVGãååšããããŸããŸãªèœãšãç©Žã®åãæ±ãã®è€éãã匷調ããããšæããŸãã ãã®èšäºã詳现ãªã¬ã€ããšããŠäœçœ®ä»ããŸãã
ãã©ã°ã€ã³ãã©ã€ãã©ãªãªã©ã¯ãããŸãããçŽç²ãªSVGã«ã€ããŠã®ã¿èª¬æããŸãã
䜿çšããå¯äžã®ããŒã«ã¯Adobe Illustratorã§ãã
ãŸããã
ããã¯ãã¹ãŠéå±ãªè¬çŸ©ããå§ãŸããå°ãªããšãäœãã§èªåèªèº«ã楜ããŸããããšãæåŸ
ããŠãç§ã¯SVGã°ã©ãã£ãã¯ã¹ãããªãã¡ã¢ãã¡ãŒã·ã§ã³ãå匷ããããšã«ããŸããã é©ããããšã«ãã€ã³ã¿ãŒãããã«ã¯ã»ãšãã©æ
å ±ããããŸããã§ããã ã©ãã§ãåºæ¬ã説æããéè€ããæ
å ±ããããŸããããäžè¬çã«ã¢ãã¡ãŒã·ã§ã³ã«ã€ããŠã¯ãå®å
šã«åäžã®æ
å ±ãæã€2-3ãªã³ã¯ã®åŒ·ãããããµã©ã¹ãŠã§ã€ãã³ã«ããèšäºA Guide to SVG AnimationsïŒSMILïŒã®ç¿»èš³ã§ãã
圌女ã®èšäºã¯ãã¹ãŠã«ã€ããŠèªã£ãŠããŸãããè¡šé¢çãªãã®ã§ãã ããã«ãããããããç§ã¯ããªããããã«æ
£ããããšã匷ããå§ãããŸãã *翻蚳ãžã®ãªã³ã¯*次ã®æ°é±éã¯ãããŸããŸãªãœãŒã¹ããæ
å ±ã1ã€ãã€åéããããšã«è²»ãããŸããã ãããã®æ€çŽ¢ã®çµæã¯ãã®èšäºã§ãã
Illustratorããã®é©åãªSVGãšã¯ã¹ããŒã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãAdobe Illustratorã®æ©èœãšåé¡ã«çŠç¹ãåœãŠãŠãããããIllustratorã䜿çšããŠããªãå Žåã¯ããã®éšåãã¹ãããã§ããŸãã
ã¢ãã¡ãŒã·ã§ã³çšã®ããã¥ã¡ã³ãã®æºåã¯éåžžã«éèŠãªæ®µéã§ããããããæ ããšéåžžã«äžå¿«ãªçµæãçããå¯èœæ§ããããŸãã Illustratorã§ããè¯ãæç»ããæ¹æ³ãæããããã«ãç§ã¯ããŸããã ç§ãèšãå¯äžã®ããšã¯ãå³åœ¢ãæããšãã¯ãå€ã«åŸãå¿
èŠããããšããããšã§ããå°æ°ç¹ã®åŸã«æ°åã1ã€ã ãããããšãæãŸãããæŽæ°ã§ããããšãæãŸããã§ãã ãã®èŠåã«åŸãå¿
èŠã¯ãããŸãããããã¡ã€ã«ãµã€ãºãçž®å°ããã¢ãã¡ãŒã·ã§ã³ãåçŽåããæ
å ±éãèŠèŠçã«åæžããŸãã ã芧ãã ãã
<path d="M 17.7 29 C 28.2 12.9 47 5.6 62.8 10.4 c 28.2 8.5 30 50.5 24.8 53.1 c -2.6 1.3 -10.4 -6.1 -29.2 -34.6"/> <path d="M 17.651 28.956 c 10.56 -16.04 29.351 -23.359 45.12 -18.589 c 28.151 8.516 29.957 50.5 24.841 53.063 c -2.631 1.318 -10.381 -6.148 -29.235 -34.643"/>
äŸã§ã¯ãåãæ²ç·ã§ãããæåã®å Žåã¯å°æ°ç¹ã®1æ¡ã2çªç®ã®å Žåã¯3æ¡ã§ãã ãã®æ²ç·ã«ã¯4ã€ã®ãã€ã³ããããªãã2çªç®ã®äŸã¯1çªç®ã®äŸããã1/3é·ãã§ãã 20ãã€ã³ãã®æ²ç·ãã©ããããã®ã¹ããŒã¹ãåããæ³åããŠã¿ãŠãã ããã
ã¯ã€ã€ãã¬ãŒã ãæããåŸãç»åãSVGãã¡ã€ã«ãšããŠä¿åããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã[ååãä»ããŠä¿å]ãŸãã¯[ååãä»ããŠãšã¯ã¹ããŒã]ã®2ã€ã®æ¹æ³ããããŸãã ããããã©ã¡ããéžæããã®ã§ããïŒ ããªããç§ãä¿¡é ŒããŠãããªã-ãååãä»ããŠä¿åãã䜿çšããŠãã ããã çç±ãç¥ãããå Žåã¯ããã¿ãã¬ãå±éããŠãã ããã
ãªãã§ããïŒäžèŠãããšãããéãã¯ãããŸãããæçµçã«ãã€ã¡ãŒãžãå«ã.svgãã¡ã€ã«ãååŸããããã§ãã ãã ãããšã¯ã¹ããŒãèšå®æ®µéã§ãéãã¯å§ãŸããŸãã
ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã詳现ã«èª¬æããŠãæå³ããããŸãããIllustratorã¯ã説æãã»ã¯ã·ã§ã³ã§éåžžã«ããŸã説æããŠããŸããã芧ã®ãšããããä¿åãã«ã¯ããšã¯ã¹ããŒãããããå€ãã®èšå®ãããã誰ãã«ãšã£ãŠã¯ãšã¯ã¹ããŒããæåŠããæ£åœãªçç±ã«ãªããŸãããç¶è¡ããŸãã
ãã©ãŠã¶ã§äž¡æ¹ã®æ¹æ³ã§ä¿åããããã¡ã€ã«ãéããŠããéãã¯ããããŸããã ãã ããçŸæç¹ã§ã¯ãå€èŠ³ã§ã¯ãªãå¡ãã€ã¶ãã«é¢å¿ããããããåãããšãè¡ããŸãããããã¹ããšãã£ã¿ãŒã䜿çšããŸãã ããã§ãéããããæ確ã«ãªããŸãã ç§ã¯ãããªãèªèº«ãçµè«ãèŠãŠãæãããšããå§ãããŸãããã¡ã€ã«ã«ã¯äœãå€æŽãå ããããã®ãŸãŸå
šäœãã³ããŒããŸããã
茞åºãã <svg id="_1" data-name=" 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 51 51"> <defs> <style> .cls-1 { fill: none; stroke: #4ec931; stroke-miterlimit: 10; } .cls-2 { fill: #4ec931; } .cls-3 { fill: #fff; } </style> </defs> <title>my_icon_E</title> <circle class="cls-1" cx="25.5" cy="25.5" r="20"/> <circle class="cls-1" cx="25.5" cy="25.5" r="25"/> <g id="_2" data-name=" 2"> <circle class="cls-2" cx="25.5" cy="25.5" r="15"/> <polygon class="cls-3" points="25.5 34.8 34 20.3 17 20.3 25.5 34.8"/> </g> </svg>
ä¿åãã <?xml version="1.0" encoding="utf-8"?> <svg version="1.1" id="_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve"> <style type="text/css"> .st0{fill:none;stroke:#4EC931;stroke-miterlimit:10;} .st1{fill:#4EC931;} .st2{fill:#FFFFFF;} </style> <circle class="st0" cx="50" cy="50" r="20"/> <circle class="st0" cx="50" cy="50" r="25"/> <g id="_2"> <circle class="st1" cx="50" cy="50" r="15"/> <polygon class="st2" points="50,59.3 58.5,44.8 41.5,44.8 "/> </g> </svg>
CSSã¯ã©ã¹ãšåœåã®äžè¬çãªåœåã®éãã«å ããŠãäžéšã®äººã¯äžåãšèãããããããŸããããä»ã«ãåé¡ããããŸãã ããšã¯ã¹ããŒãããããšãç»åå
šäœã2åã«åæžãããŸããã ããã¯ãå³åœ¢ã®ãµã€ãºãš
viewBoxå±æ§ã«ãã£ãŠå€æã§ããŸãã ããã¯ãã¯ãã«ã°ã©ãã£ãã¯ãªã®ã§ãæªåããããšã¯ãããŸããã§ããããããã§ãäžå¿«ã§ãã ãä¿åãã¯ãIllustratorã§æå®ãã寞æ³ãæ®ããŸããã
ãããããããã¯ãã¹ãŠã茞åºãããããšãã§ããè±ã®çš®é¡ãšæ¯èŒããŠè±ã§ãã å
·äœçã«ã¯ããããã®äŸã«ã¯ãã®åé¡ã¯ãããŸããããããããã€ã¡ãŒãžãéåžžã«åçŽã ããã§ãã ããããä»ã®äœåããšã¯ã¹ããŒããããšãã«ãããã«ééããŸããã 圌女ã®ã¹ã¯ãªãŒã³ã·ã§ããã¯ãã¡ã
ãã¡ã€ã«ãµã€ãºãååã«å€§ããã®ã§ãåé¡ã®éšåã®ã¿ãæäŸããŸã
<g id="-21" data-name=""> <path class="cls-9" d="M477.94,456.75a1.83,1.83,0,0,1-.9,1.36l-4.91,3.1a7.29,7.29,0,0,1-7.5,0l-16.29-9.72a1.85,1.85,0,0,1-.92-1.56v-3.68a1.85,1.85,0,0,0,.92,1.56l.38.23,15.91,9.49a7.29,7.29,0,0,0,7.5,0l4.53-2.86.38-.23a1.87,1.87,0,0,0,.9-1.36Z" transform="translate(-5.5 -5.5)"/> <path class="cls-10" d="M477,451.19l-16.38-9.5a7.28,7.28,0,0,0-7.32,0l-5,2.9a1.88,1.88,0,0,0-.94,1.51v.17a1.85,1.85,0,0,0,.92,1.56l.38.23,15.91,9.49a7.29,7.29,0,0,0,7.5,0l4.53-2.86.38-.23a1.87,1.87,0,0,0,.9-1.36v-.51A1.88,1.88,0,0,0,477,451.19Z" transform="translate(-5.5 -5.5)"/> </g> <g id="-22" data-name=""> <path class="cls-9" d="M525.37,557.86a1.85,1.85,0,0,1-.9,1.36l-33.22,19.64a7.29,7.29,0,0,1-7.5,0l-16.29-9.72a1.85,1.85,0,0,1-.92-1.56v-3.68a1.85,1.85,0,0,0,.92,1.56l.38.23,15.91,9.49a7.29,7.29,0,0,0,7.5,0l32.84-19.41.38-.23a1.83,1.83,0,0,0,.9-1.36Z" transform="translate(-5.5 -5.5)"/> <path class="cls-10" d="M524.45,552.3l-16.38-9.51a7.31,7.31,0,0,0-7.32,0l-33.27,19.44a1.89,1.89,0,0,0-.94,1.51v.17a1.85,1.85,0,0,0,.92,1.56l.38.23,15.91,9.49a7.29,7.29,0,0,0,7.5,0l32.84-19.41.38-.23a1.83,1.83,0,0,0,.9-1.36v-.5A1.86,1.86,0,0,0,524.45,552.3Z" transform="translate(-5.5 -5.5)"/> </g>
äœãç°åžžãªããšã«æ°ã¥ããŸãããïŒ
ãã©ã³ã¹ãã©ãŒã å±æ§ãå°ãããšããã®éãã§ãã ã©ãºããªãŒå
šäœãå°ç¡ãã«ããã®ã¯åœŒã§ãã ç»åãããšã¯ã¹ããŒãããããšãIllustratorã¯ãã®ç»åããã¹ãŠã®
<path>èŠçŽ ã«å²ãåœãŠãŸãã ãã ãããã®ãããªåé¡ã¯ãä¿åãã§ã¯èŠãããŸããã
ããªãããŸã ç§ã®digããç解ããŠããªããªããç§ã¯èª¬æããŸãïŒããªãããã®ãããªèŠçŽ ã®åããã¢ãã¡ãŒã·ã§ã³åããããªããããã¯æšªã«ã·ããããŸãã ãã®å Žåãäž¡æ¹ã®è»žã§5.5ã§ãã ããã¯ã移åã¢ãã¡ãŒã·ã§ã³ã«ãã£ãŠ
å€æå±æ§ãå€æŽãããéå»ã®ãã¹ãŠã®å€ããªã»ãããããããã§ãã ãã¡ãããããã¯åé¿ããããšãã§ããŸãããåŸã§ãã®çµæãä¿®æ£ãããããåé¡ãåé¿ããæ¹ããŸãã§ã...
çŸæç¹ã§ã¯ããã®åé¡ã«æ°ã¥ããã ãã§ããããããå¯äžã®åé¡ã§ã¯ãããŸããã ç¶æ³ãè³¢æã«è©äŸ¡ãããšããã¹ãŠã«ãååãä»ããŠä¿åããåã€ããšãããããŸãã ãã®ããã䜿çšããå§ãããŸãã
SVGããã¥ã¡ã³ããHTMLã«ã€ã³ããŒãããæ¹æ³
ã¢ãã¡ãŒã·ã§ã³ãçŽæ¥éå§ããåã«ãããŒãžã«SVGãåã蟌ãæ¹æ³ã«ã€ããŠèª¬æããŸãã åã¡ãœããã«ã¯ãã¢ãã¡ãŒã·ã§ã³ã«çŽæ¥åœ±é¿ããç¬èªã®ãæ©èœãããããŸãã ãããŠãããªãããããã«ã€ããŠè©±ããªããªãã°ãèšäºã¯äžå®å
šã§ãã
ã€ã³ã¿ã©ã¯ãã£ãã¢ãã¡ãŒã·ã§ã³ãåããæ¢è£œã®SVGãæ¢ã«ããããã®ããã¥ã¡ã³ãããµã€ãã«åã蟌ãããšãæ®ã£ãŠãããšããŸãã ãããè¡ãæ¹æ³ã¯ïŒ
ãªãã·ã§ã³1ã¯ãSVGãç»åã§ãããæšæºã®HTMLããŒã«ã䜿çšããŠã€ã³ããŒãã§ããããšãæãåºããŠãã ããã ããã¥ã¡ã³ããžã®ãªã³ã¯ãå«ã
<img>ã¿ã°ãäœæã§ããŸã
<img src="Hello_SVG.svg" />
ãŸãã¯ãSVGãèæ¯ç»åãšããŠèšå®ããŸã
#box { background-image: url("Hello_again.svg"); }
ãã®æ¹æ³ã®äž»ãªæ¬ ç¹ã¯ãç»åã®åé¢ã§ãã åç©é€šã®å±ç€ºç©ãšããŠã®SVG-èŠãããšãã§ãã觊ãããšã¯ã§ããŸããã å
éšã®ã¢ãã¡ãŒã·ã§ã³ã¯æ©èœããŸãããã€ã³ã¿ã©ã¯ãã£ãæ§ã«ã€ããŠã®è©±ã¯ãããŸããã ããšãã°ããŠãŒã¶ãŒã®ã¯ãªãã¯ã«ãã£ãŠã¢ãã¡ãŒã·ã§ã³ãããªã¬ãŒãããå ŽåããŸãã¯SVGããã¥ã¡ã³ãã®ã³ã³ãã³ããåçã«å€æŽããå¿
èŠãããå Žåããã®æ¹æ³ã¯é©ããŠããŸããã
ãªãã·ã§ã³çªå·2ã¯ã
<object>ãŸãã¯
<embed>ã¿ã°ã䜿çšããŠSVGãããªããžã§ã¯ããäœæããããšã§ãã
<iframe>ã䜿çšããŠãã¬ãŒã ãäœæããããšãã§ããŸããããã®æ¹æ³ã®äœ¿çšã¯ãå§ãããŸããã ãã®ãªãã·ã§ã³ãæ£ãã衚瀺ãããããã«ããã¹ãŠã®ãã©ãŠã¶ãŒã«
æŸèæãå¿
èŠã§ã
<object data="My_SVG.svg" type="image/svg+xml"></object> <embed src="My_SVG.svg" type="image/svg+xml" /> <iframe src="My_SVG.svg"></iframe>
ããã®æ¹ãè¯ãã§ãã ã¢ãã¡ãŒã·ã§ã³ã¯ãSVGããã¥ã¡ã³ãå
ã§å®£èšãããã³ã³ãã³ããå€éšJavaScriptã§å©çšå¯èœãªå Žåã«ã®ã¿ãã€ã³ã¿ã©ã¯ãã£ãã«ãªãæ©äŒãåŸãŸãã ããã§ã
<object>ãš
<iframe>ã¯ãçªç¶ã€ã¡ãŒãžãããŒããããªãå Žåã«ã¹ã¿ãã衚瀺ã§ããŸãã
ãªãã·ã§ã³çªå·3ã¯ãSVGããã¥ã¡ã³ãã®ã³ã³ãã³ããHTMLã«çŽæ¥è²Œãä»ããããšã§ãã ã¯ããã§ããŸãã SVGãµããŒã
ã¯HTML5æšæºã«ç»å ŽããŸã
ã ã SVGã¯æ¬è³ªçã«ããŒãžèªäœã®äžéšã§ãããããSVGãžã®ã¢ã¯ã»ã¹ã¯ã©ãã«ã§ããããŸãã ã¢ãã¡ãŒã·ã§ã³ãšèŠçŽ ã¹ã¿ã€ã«ã¯ãSVGå
ãšå€éšãã¡ã€ã«ã®äž¡æ¹ã§å®£èšã§ããŸãã æ¬ ç¹ã¯ããã®ãããªç»åãããŒãžãšã¯å¥ã«ãã£ãã·ã¥ãããªãããšã§ã
<body> ... <svg> </svg> </body>
SVGã¢ãã¡ãŒã·ã§ã³
SVGèŠçŽ ãã¢ãã¡ãŒã·ã§ã³åããã«ã¯ãäž»ã«2ã€ã®æ¹æ³ããããŸãã
- CSSã¢ãã¡ãŒã·ã§ã³
- SVGã«åã蟌ãŸããSMILã¢ãã¡ãŒã·ã§ã³ïŒå®éãSMILã«åºã¥ããŠæ©èœãæ¡åŒµããSVGã¢ãã¡ãŒã·ã§ã³ã§ãïŒ
å人çã«ã¯ããããããå€éšããšãå
éšãã®ã¢ãã¡ãŒã·ã§ã³ãšããŠåé¢ããŠããŸãã ãã®åå²ã¯æ¡ä»¶ä»ãã§ãããããã§ãæ©èœçãªéãããããŸãã äžè¬çãªéãã«ã€ããŠèª¬æãããšãCSS-ãã©ãŠã¶ãŒã®ãµããŒããåäžããŸãã SMIL-åªããæ©èœããããŸãã ã©ã¡ãã䜿çšããã®ãè¯ãããèšãã®ã¯é£ãã ãããã¯å€ãã®ç¹ã§éåžžã«äŒŒãŠããŸãã éžæã¯ã¿ã¹ã¯ã«äŸåãããããCSSã®ä»£ããã«SMILã䜿çšããäž»ãªçç±ã説æããŸãã
SMIL-å¿
èŠãªå ŽåïŒ
- CSSã§ã§ããªãã£ãããšïŒãµããŒããããŠããªãå±æ§ã®ã¢ãã¡ãŒã·ã§ã³åãªã©ïŒ
- ã¢ãã¡ãŒã·ã§ã³ãããæ£ç¢ºã«å¶åŸ¡ã§ããŸãã
- ãã¹ã¢ãŒãã£ã³ã°ãè¡ããŸãïŒãã¹ã¿ã°ã®å±æ§dã®ã¢ãã¡ãŒã·ã§ã³ïŒ
- ã¢ãã¡ãŒã·ã§ã³ãåæãã
- ã€ã³ã¿ã©ã¯ãã£ããªã¢ãã¡ãŒã·ã§ã³ãäœæãã
SMILãã€ã³ã¿ã©ã¯ãã£ãã¢ãã¡ãŒã·ã§ã³ã«äœ¿çšãã¹ãã ãšæžããå Žåãããã¯CSSã§åãããšãã§ããªããšããæå³ã§ã¯ãããŸããã Simply SMILã¯ãããæ©èœçã§æŽç·ŽãããããŒã«ã§ãã ãããŠããããå¿
èŠãªãšãã ãããã䜿ãããã¹ãã§ããçç±ã§ãã ã¢ãã¡ãŒã·ã§ã³ãåçŽã§ãCSSãçãããšãã§ããå Žåã¯ããããè¡ãå¿
èŠããããŸãã
CSSã¢ãã¡ãŒã·ã§ã³
ããã«æ°ãããã®ã¯ãããŸããã HTMLã®å Žåãšåãæ¹æ³ã§ãSVGèŠçŽ ãã¢ãã¡ãŒã·ã§ã³åã§ããŸãã ãã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ã¯
@keyframesã䜿çšããŠäœæãããŸãã CSSã¢ãã¡ãŒã·ã§ã³ã¯å¥ã®ãããã¯ã§ããããããã®ç¹ã«ã€ããŠã¯è©³ãã説æããŸããããããã¯ãŒã¯ã«ã¯ããã®ãããã¯ã«é¢ããããã¥ã¡ã³ããšããã¥ã¢ã«ããããããããŸãã ããã«èšèŒãããŠããããšã¯ãã¹ãŠSVGã«åœãŠã¯ãŸããŸãããããã€ãäŸã瀺ããŸãã
SVGããã¥ã¡ã³ãã«ã¯å
éšã¹ã¿ã€ã«ã·ãŒãããããããã¢ãã¡ãŒã·ã§ã³ãèšè¿°ããŸã
<svg> <style> </style> </svg>
SVGå±æ§ã®ã¢ãã¡ãŒã·ã§ã³ã¯ãCSSå±æ§ãšåããããç°¡åã§ã
@keyframes reduce_radius { from { r: 10; } to { r: 3; } } @keyframes change_fill { 0% { fill: #49549E; } 75% { fill: #1bceb1; } 100% { fill: #1bce4f; } }
from-toã³ã³ã¹ãã©ã¯ãã ãã§ãªããããŒã»ã³ããŒãžãšããŠå€ãèšå®ã§ããŸã次ã«ãäœæããã¢ãã¡ãŒã·ã§ã³ãç®çã®èŠçŽ ã«åçŽã«é©çšããŸã
.circle { animation: change_fill 1s, popup 2s; }
äžèšã§èª¬æããããšã¯ãã¹ãŠéçãªã¢ãã¡ãŒã·ã§ã³ã§ãããåæ¹åæ§ã®åãã¯ãããŸããã ããããæ¬åœã«ãããå Žåã¯ã©ãã§ããããïŒ ãŸãããŸã ã€ã³ã¿ã©ã¯ãã£ãã«ãCSSã§äœããããããšãã§ããŸãã ããšãã°ã
æšç§»ã
ãããŒæ¬äŒŒ
ã¯ã©ã¹ãšçµã¿åãããŠäœ¿çšââããå Žå
.circle { fill: #49549E; transition: .3s; } .circle:hover { fill: #1bceb1; }
ã¢ã€ãã ã«ã«ãŒãœã«ãåããããšã300msã®éè²ãéããéã«å€ãããŸãå±æ§ã®ã¢ãã¡ãŒã·ã§ã³ãšå°ããªã€ã³ã¿ã©ã¯ãã£ãæ©èœ-CSSã¢ãã¡ãŒã·ã§ã³ã®æ©èœãçµäºããå Žæã§ãã ããããã»ãšãã©ã®ã¿ã¹ã¯ã¯äœããã®å±æ§ãã¢ãã¡ãŒã·ã§ã³åããããšã«ãªãããããã®æ©èœã§ååã§ãã ã»ãšãã©ãã¹ãŠã®SVGå±æ§ãã¢ãã¡ãŒã·ã§ã³åã§ããŸãã ãããŠããã»ãŒãã¹ãŠããæžããšããã©ã³ãã ãªå±æ§ãéžæãããããã¢ãã¡ãŒã·ã§ã³åãããŠããªãããšãå€æããå Žåãããªãã¯éåžžã«å¹žéã§ããããšãæå³ããŸãã
SMILã¢ãã¡ãŒã·ã§ã³
SMILã¢ãã¡ãŒã·ã§ã³ã¯äžçãšåããããå€ããåŸã
ã«æ¶æ»
ãã€ã€ããããã©ãŠã¶ã®ãµããŒãã¯ãŸãšãã§ãããCSSã¢ãã¡ãŒã·ã§ã³ããã¯ãŸã å£ã£ãŠããŸãããSMILããŸã é
åçã§ããçç±ã¯ãããŸããCSSã§ã¯ã§ããªãããã§ãã
SMILã«ã€ããŠã¯ãããã«ã€ããŠã¯ã»ãšãã©èª¬æããŸããããå€ãã®èœãšãç©Žãããããã詳ãã説æããŸãã ãããŠããã®ãããã¯ã¯CSSããã人æ°ããããŸããã ã¢ãã¡ãŒã·ã§ã³ã®äž»ãªã¿ã°ã¯ã
<animate> ã
<set> ã
<animateTransform> ã
<animateMotion>ã§ãã
<ã¢ãã¡ãŒã·ã§ã³>
éç ²ããå§ããŸãããã
<animate> -ä»»æã®å±æ§ãã¢ãã¡ãŒã·ã§ã³åããããã«äœ¿çšãããã¡ã€ã³ããŒã«ã§ãã æ®ãã®ã¿ã°ã¯é«åºŠã«å°éåãããŠããŸãããæåã«æåã®ãã®ããããŸãã
èŠçŽ ã«ã¢ãã¡ãŒã·ã§ã³ãé©çšããæ¹æ³ã¯ïŒã¢ãã¡ãŒã·ã§ã³ãé©çšããèŠçŽ ãæå®ããã«ã¯ã2ã€ã®æ¹æ³ããããŸãã
- èŠçŽ å
ã«ã¿ã°ãé
眮ããŸãã ãã®ã¡ãœããã䜿çšãããšããªããžã§ã¯ãå
ã«ã¢ãã¡ãŒã·ã§ã³ãã«ãã»ã«åã§ãããããã³ãŒããèªã¿ããããªããŸã
<circle ...> <animate .../> </circle>
ãã®å Žåãã¢ãã¡ãŒã·ã§ã³ã¯circleèŠçŽ ã«é©çšãããŸãã - ã¢ã€ãã ãžã®ãªã³ã¯ãæž¡ããŸãã ãã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ã1ãæã§åéããå Žåã«äŸ¿å©ã§ã
<svg xmlns:xlink="http://www.w3.org/1999/xlink"> <circle id="blue" .../> ... <animate xlink:href="#blue" .../> </svg>
ããã§ã¯xlinkïŒhrefå±æ§ã䜿çšãããŸãããã®å±æ§ã§ã¯ãã¢ãã¡ãŒã·ã§ã³ãé©çšããèŠçŽ ã®IDãæå®ããŸãã ãã®ã¡ãœãããæ©èœããããã«ã¯ã xlinkåå空éãå®çŸ©ããå¿
èŠããããŸãã ããã¯<svg>ã¿ã°ã§è¡ãããŸãã
SVG 2ã§ã¯ã
xlinkïŒhrefå±æ§ã¯éæšå¥šã§ããä»æ§ã§ã¯ã代ããã«
hrefã䜿çšããããšãæšå¥šããŠããŸããããã¯ã
xlinkåå空éãå¿
èŠãšããŸããã
<circle id="blue" .../> ... <animate href="#blue" .../>
ããããããã§ã¯ããã¹ãŠãããã»ã©ã¹ã ãŒãºã§
ã¯ãããŸãã
-href㯠Safariã§ãµããŒããããŠããŸããã è çç¶æ
ã«ãªããäžæ¹ã®å±æ§ã¯å€ããä»æ¹ã¯éšåçã«ãµããŒããããŠããŸããã ã ãããã©ã®æ¹æ³ã䜿çšãããã誰ããèªåã§æ±ºããã
CSSã»ã¬ã¯ã¿ãŒãšã®é¡äŒŒç¹ã«æ°ã¥ãã人ã®ããã«ïŒæ®å¿µã§ââãããã¯ã©ã¹ããšã«èŠçŽ ã«ã¢ã¯ã»ã¹ããããšã¯ã§ããŸãã
<circle class="blue_circle" .../> <animate href=".blue_circle" .../>
ããã¯æ©èœããŸããïŒã¢ãã¡ãŒã·ã§ã³ã®å±æ§ãæå®ããæ¹æ³ã¯ïŒããã«ã¯
attributeNameããã
ãŸã ã å€ã¯ãã¢ãã¡ãŒã·ã§ã³åããå±æ§ã®ååã§ãã
<circle r="25" ...> <animate attributeName="r" ... /> </circle>
attributeNameã«rãæå®ããããšã«ãããåã®ååŸãã¢ãã¡ãŒã·ã§ã³åããããšã«ãªããšèšããŸã ãattributeTypeãšã¯äœã§ããããªãå¿
èŠãªãã®ã§ããïŒåœ¹ã«ç«ããªãããçè«çã«ã¯ãCSSãšXMLã®å±æ§åãäžèŽããå Žåãåé¡ãçºçããå¯èœæ§ããããŸãã ãã®ç«¶åã解決ããã«ã¯ãããŒã ã¹ããŒã¹ãæ瀺çã«æå®ããå¿
èŠããããŸãã
æ€
åã«ã¯2ã€ã®æ¹æ³ããã
ãŸã ããã¬ãã£ãã¯ã¹ãæå®ãããã
attributeTypeã䜿çšã
ãŸã ã ãã¬ãã£ãã¯ã¹ããå§ããŸãããã
ã©ãã§ã圌ãã¯æ¬¡ã®ãããªãã®ãæžããŸãïŒ
å±æ§ã«XMLNSãã¬ãã£ãã¯ã¹ãæå®ããŠãåå空éãæ瀺çã«æå®ã§ããŸãã
ãã®ã¡ãœããã¯ãäŸã®ãªãå Žåãšæž¡ãå Žåã«èª¬æãããŠããŸãã ã ããç§ã¯äŒçµ±ãå€ããŸããã ïŒããã§åæ¢ããæªå€¢ãšããŠã®ãã¬ãã£ãã¯ã¹ãå¿ããŠã
attributeTypeã«è¡ãããšããå§ãããŸãïŒ
ãç§ã¯ããŸã§ãããã®ãã¿ãã¬ã®å
容ã¯ããªãé¢çœããæ¬è³ªçã«æ¢çŽ¢çã§ãã ãã¬ãã£ãã¯ã¹ãæ©èœããªããšããäºå®ä»¥å€ã®æçšãªæ
å ±ã¯ãããŸãããããã§ã¯ããããŸããããŸããããæ£ç¢ºãªå®çŸ©ããããŠãåãã®ããã«ãä»æ§ãšæšæºã§æãæ£ç¢ºãªå®çŸ©ãèŠã€ããå¿
èŠããããŸãã
人çããããããæ¹æ³ã«é¢ããçãã¬ã€ã- 2019幎3æ14æ¥ã®SVGã¢ãã¡ãŒã·ã§ã³ã®ä»æ§ãå
¬ââéããŸã
- attributeNameã»ã¯ã·ã§ã³ã§ã¯ãïŒoh horrorïŒ2001ã®SMIL Animationæšæºãç¶æ¿ããŠããããšãããããŸãã
- attributeNameã®å®çŸ©ãèªã¿åããŸã
- å©çïŒ
å®çŸ©ã®ç¿»èš³ã¯æ¬¡ã®ããã«ãªããŸãã
ãã¿ãŒã²ããå±æ§ã®ååãå®çŸ©ããŸãã XMLNSãã¬ãã£ãã¯ã¹ã䜿çšããŠãå±æ§ã®XMLåå空éãæå®ã§ããŸãã ãã¬ãã£ãã¯ã¹ã¯ãã¢ãã¡ãŒã·ã§ã³èŠçŽ ã®ã¹ã³ãŒãã§è§£éãããŸãã
ããŒããããã¯ç°¡åã«ãªããŸããã§ããã ãã®ãããªå®çŸ©ãèªãã åŸãXMLãç¥ããªã人ã¯äœãæãæµ®ãã¹ãŸããïŒ ããã ãã ç§ãšåãã
æåéããããåã£ãŠããã®ããã«èŠããã¹ãã ãšæã£ã
<animate attributeName="xmlns:* *"/>
ãã®èšäºãæžãåã«ããã®æ¹æ³ãèããŠå®å
šã«å¿ããŠããŸããã åé¡ã¯ãå®éã«ãã¹ãããããšã«ãããšãã«å§ãŸããŸããã ãããæ©èœããªããšèšã£ãŠãã誰ãé©ããªããšæããŸãã æ€çŽ¢ã«æ°æé倱æããåŸããxmlnsãã¬ãã£ãã¯ã¹ããã°ãŒã°ã«ã§æ€çŽ¢ããŸããããé©ããããšã«ãxmlnsã¯ãã¬ãã£ãã¯ã¹èªäœã§ã¯ãªãããã¬ãã£ãã¯ã¹
ã䜿çšããåå空éå®çŸ©ã®æ§ç¯ã« éäž ããŸãã ã
次ã®ããã«ãªããŸãã
<** xmlns:**="* url *" ...>
ãã®åŸãç§ã¯äœãç解ããŠããªãããšã«æ°ã¥ããŸãã...æåã¯...ãããŠä»ãååãšããŠãããã«2æéåŸã
XMLã®åå空éã§æ¢ããŠãããã®ãããããèŠã€ãããŸããã å
ã®äŸã次ã«ç€ºããŸãã
<x xmlns:n1="http://www.w3.org" xmlns="http://www.w3.org" > <good a="1" n1:a="2" /> </x>
ããããããªãã¯ããããªããšã¯äœãç¥ã£ãŠããŸããïŒ ããã§ãåäœããŸããã ãã¹ãŠã¯æ¬ã«åŸã£ãŠè¡ãããŸãã
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:n1="http://www.w3.org/2000/svg"> <circle id="www" n1:r="10" .../> <animate href="#www" attributeName="n1:r" .../> </svg>
ãã¹ãŠãã«ãŒã«ã«åŸã£ãŠè¡ãããããããšã©ãŒã¯çºçããããšã©ãŒã¯çºçããŸããããåé¡ã¯ååŸã®ãªãåãååŸããããšã§ãã åã«
rå±æ§ãæžã蟌ãŸãªãå Žåãåãçµæã«ãªããŸãã
ãšãããŒã° ïŒSVGã¯ãã¬ãã£ãã¯ã¹å±æ§ãç¡èŠããŸãã ãã®çµæãSMILãå®éã«ãã¬ãã£ãã¯ã¹ä»ãã®å±æ§ãã¢ãã¡ãŒã·ã§ã³åããŠãããã®ã¢ãã¡ãŒã·ã§ã³ã®çµæã¯è¡šç€ºãããŸããã
ç§ã®åŒè·ã§ã¯ãSVGãã€ãŸããã®ã¢ãã¡ãŒã·ã§ã³ã®ã¿ãæ±ã£ããããXMLã®ç¬¬äžäººè
ã¯æŸæãšçæãæšãŠãŠããŸããšèšããŸãã ãã®ã¡ãœãããæ©èœãããæ¹æ³ãç¥ã£ãŠãããªããã³ã¡ã³ããæè¿ããŸã ã¢ãã¡ãŒã·ã§ã³åãããå±æ§ãå±ãããã®ãæ瀺çã«ç€ºãããã«ãattributeTypeã䜿çšãããŸãã
CSS ã
XML ã
autoã® 3ã€ã®å€ãåããŸãã
attributeTypeãæ瀺çã«æå®ãããŠããªãå Žåã
autoã䜿çšãããŸãã ãã®å Žåãæåã«CSSããããã£ããã§ãã¯ãããäžèŽãããã®ããªãå Žåãã¿ãŒã²ããèŠçŽ ã®å±æ§ããã§ãã¯ãããŸãã ãã®äŸã§ã¯ãCSSããããã£ãæ£ç¢ºã«ã¢ãã¡ãŒã·ã§ã³åããããšã瀺ããŠããŸã
<animate attributeType="CSS" attributeName="opacity" .../>
ããŠã
attributeTypeã䜿çšãããšãæŸèæã䜿ããã«ãã¢ãã¡ãŒã·ã§ã³åãããå±æ§ãäœã«å±ããŠããããç°¡åã«ç€ºãããšãã§ãããããååšããªããåé¡ãã解決ã§ããŸãã
æå€ãšããã§ããïŒ ãã®ç« ã®åé ã§è¿°ã¹ãããã«ãSMILã¯æ¶æ»
ãã€ã€ãããŸããããã¯ãã¢ãã¡ãŒã·ã§ã³ãCSSã¬ãŒã«ã«å€æãããããã§ãã ã»ãšãã©ã®éè€ããå±æ§ã¯ãäºãã«å®å
šã«åäžã§ãã CSSãŸãã¯SMILå±æ§ãå±ãããã©ããã¯é¢ä¿ãããŸãã-çµæã¯åãã«ãªããŸãã ãŸããããã©ã«ãã®
èªåå€ãšçµã¿åãããŠã
attributeTypeãæ瀺çã«å®çŸ©ããå¿
èŠã¯ãããŸããã
èå³æ·±ãäºå®ã®ç¬éïŒ attributeType㯠SVGã§ã¯ãµããŒããããŠããŸããã 圌ã¯ã©ãããæ¥ãã®ïŒ 圌ã¯ãSVGã¢ãã¡ãŒã·ã§ã³ã®ããŒã¹ãšãªã£ãŠããSMIL Animationããæ¥ãŸããã ãŸãã attributeType㯠SVG 1.1 Second Editionã®åŸã«åé€ãããŸãã ãã¹ãŠã®èšŒæã¯ãã¡ãã¢ãã¡ãŒã·ã§ã³å€ã決å®ããæ¹æ³ã¯ïŒã¢ãã¡ãŒã·ã§ã³ã®å±æ§ãæå®ããã ãã§ã¯ååã§ã¯ãªãããããã®å€ãå®çŸ©ããå¿
èŠããããŸãã ããã§ã
å€ ãã ã
å€ ã«ãã£ãŠ ãæ¥
ãŸã ã
åžžã«äžç·ã«ããã«ããã«ããå§ããŸãããïŒ
fromãš
to ã ãããã®ååšã®æå³ã¯ãå§ãŸã
ããçµãããŸã§ãæããã«
ããŠããŸã
<circle r="25" ...> <animate attributeName="r" from="10" to="45" .../> </circle>
ã¢ãã¡ãŒã·ã§ã³ã®çµæã¯ãåã®ååŸã10ãã45ã«æ»ããã«å€åããŸããããã¯åžžã«äžç·ã§ãããšèšã£ãã«ããããããã
toã¯æ瀺çã«
ãã宣èšããã«äœ¿çš
ããããšãã§ããŸãã ãã®å Žåã
fromã¯ã¿ãŒã²ããèŠçŽ ã§å®çŸ©ãããå€ãåããŸãã äžèšã®äŸã§ã¯ãã¢ãã¡ãŒã·ã§ã³ã¯25ããå§ãŸããŸãã
è€æ°ã®å€ã®ã»ãããæå®ããå¿
èŠãããå Žåãå€ã䜿çšãããŸãã å€ã¯ã»ãã³ãã³ã§ãªã¹ããããŸãã
<circle r="25" ...> <animate attributeName="r" values="15;50;25" .../> </circle>
ååŸã®å€ã¯15ã«æžå°ãã50ã«å¢å ããŠããæåã®äœçœ®ã«æ»ããŸããæåŸã®è¡ã 圌ã¯ãã©ããããã©ãããæ°ã«ããŸããã圌ãèå³ãæã€ã®ã¯ãã©ãã ããã ãã§ãã ã€ãŸãã絶察å€ã§ã¯ãªããçžå¯Ÿå€ã§åäœããŸã
<circle r="25" ...> <animate attributeName="r" by="15" .../> </circle>
ã¢ãã¡ãŒã·ã§ã³ã®çµæãååŸã¯15å¢å ããŸããã€ãŸãã25 + 15 = 40ã«ãªããŸããäŒèª¬ã¯
"ã¢ãã¡ãŒã·ã§ã³ãé²ãã¹ãéã瀺ãã®ã«äœ¿çšã§ãã"ããã¥ã¢ã«ã®åºãããåã£ãŠããŸãã
from = 20 ã
to = 50 ãããã³
= 10ã§äžããã
ãå Žåããã®ãã¹ã¯10ã®ããžã£ã³ããã«ãã£ãŠå
æããå¿
èŠããããŸãã 20ã30ã40ã50ãããããã©ã®ããã«è©ŠããŠã¿ãŠããã¢ãã¡ãŒã·ã§ã³ã®æç¡ã«ããããããã¢ãã¡ãŒã·ã§ã³ã¯å°ãå€åããŸããã§ããã ãŸããä»æ§ã«ç¢ºèªãèŠã€ãããŸããã§ããã ããã¯åãªãééãã®ããã§ãã
å€ã®åªå
é äœãæãé«ãã次ã«
fromãã toãŸã§ ãæåŸã«ãç¶ããŸãã åªå
床
ãæãäœãããããäŒèª¬ããåççã«æ©èœããªãçç±
ã説æããŠããŸãã ãã ãã
fromãšãšãã«åäœããããš
ã«ãã ããã®å Žåã
fromã¯åã«èŠçŽ ã®çŸåšäœçœ®ããªãŒããŒã©ã€ãããŸã
<circle cy="50" ...> <animate attributeName="cy" from="70" by="30" .../> </circle>
ããã§ã¯ã50ã§ã¯ãªãã¢ãã¡ãŒã·ã§ã³ã70ã§å§ãŸãã100ã§çµãããŸãçžå¯Ÿã¢ãã¡ãŒã·ã§ã³ã®è©³çŽ°ä»ãšåãããã«å±æ§ãæ©èœãããããšãã§ããŸãã ããã¯ã
replaceãš
sumã® 2ã€ã®äœçœ®ãæã€ã
additiveå±æ§ã䜿çšããŠè¡ãããŸãã
æåã¯ããã©ã«ããªã®ã§ã2çªç®ã«èå³ããããŸããsumã®å€ã§ã¯ããã¹ãŠã®å±æ§ãã¿ãŒã²ããèŠçŽ ã®çŸåšã®å€ã«è¿œå ãããŸããform = 5ããã³to = 15ã®å€ã§ååŸ20ãã¢ãã¡ãŒã·ã§ã³åãããšãã¢ãã¡ãŒã·ã§ã³ã¯20 + 5ã20 + 15ã«ãªããŸãã <circle r="20" ...> <animate attributeName="r" from="5" to="15" additive="sum" .../> </circle>
ã¢ãã¡ãŒã·ã§ã³ãå®è¡ãããšãäœçœ®25ãžã®æ¥æ¿ãªãžã£ã³ãããããŸãããããã¯è¯ããããŸããïŒãã¡ããããããæå³ãããŠããå Žåãé€ããŸãïŒãããã¯ãã§åé¿ããããšãã§ãã= 0ãã©ãŒã ããããã¯äœ¿çšã®ç®çæååãåäžã®å¹æããªãåŸãããšãã§ããã®ã§ãæ·»å å€ã®äœ¿çšã«ãã£ãŠ <animate attributeName="r" from="0" to="15" additive="sum" .../> <animate attributeName="r" by="15" .../>
ç§ãšããŠã第äºã®æ¹æ³ã¯ãéåžžã«ã¯ãªãŒã³ãã€å®¹æã§ããã¢ãã¡ãŒã·ã§ã³ã®ç¶ç¶æéãæå®ããã«ã¯ïŒåäœããã¢ãã¡ãŒã·ã§ã³ãäœæããããã«å¿
èŠãªæåŸã®å±æ§ããããŸãã-ãã㯠durã§ããå±æ§å€ã¯ã¢ãã¡ãŒã·ã§ã³ã®ç¶ç¶æéã決å®ããŸããããã¯ãç§ãšããªç§ã®äž¡æ¹ã§æå®ã§ããŸã <animate dur="0.5s" .../> <animate dur="500ms" .../> <animate dur="00:00:00.5" .../>
æåŸã®è¡ãããäœãä»ã®ãã®ããããšæšæž¬ã§ããŸã...å€ãååäœãããã«ã¯æéåäœã§ç€ºãããšãã§ããŸã <animate dur="1.2min" .../> <animate dur="0.02h" .../>
ãã¡ãã¯ã¯ããªãå°çãäœæéã§å€ã衚瀺ããããšãã§ããã®ãç¥ã£ãŠããŸãããä»ã®äººã®äºã«ã¯è¡ããŸãããããªããæããªããããã¯ãªãã§ãã...ä»ã®å±æ§ã«ã€ããŠã¯ãäžæçãªå€ãåã圢åŒã«èšå®ãããŠããŸã fillå±æ§ïŒãã®å±æ§ããã®ååãšæ··åããªãã§ãã ããïŒã¯ãã¢ãã¡ãŒã·ã§ã³ã®çµäºåŸã®èŠçŽ ã®åäœãæ
åœããŸãã次ã®2ã€ã®ãªãã·ã§ã³ããããŸãã - åé€ïŒããã©ã«ãå€ïŒ-ã¢ãã¡ãŒã·ã§ã³ãçµäºãããšããã«ããã¹ãŠã®å€æããªã»ãããããèŠçŽ ã¯ã¢ãã¡ãŒã·ã§ã³åã®ç¶æ
ã«ãªããŸã
- freeze-èŠçŽ ã¯ã¢ãã¡ãŒã·ã§ã³ã®æçµäœçœ®ã§ããªãŒãºããŸã
ã¢ãã¡ãŒã·ã§ã³ãã«ãŒãããããšã¯å¯èœã§ããïŒçãã¯ã€ãšã¹ã§ãããããè¡ãã«ã¯ãrepeatCountå±æ§ã§äžå®å€ãæå®ããŸãããã®å±æ§ã¯ã¢ãã¡ãŒã·ã§ã³ã®ç¹°ãè¿ãæ°ã決å®ããããã©ã«ãã¯1ã§ãããä»»æã®æ°ãæå®ã§ããŸã <animate repeatCount="indefinite" .../> <animate repeatCount="3" .../>
1ã€ç®ã¯ç¡éã«ç¹°ãè¿ããã2ã€ç®ã¯3ååäœããŸãããã®ãããªè¿·æãªäººã
ã®ããã« repeatDurãè¡ããŸããããã®å±æ§ã¯ãã¢ãã¡ãŒã·ã§ã³ã®éå§ããäžå®æéåŸã«ã¢ãã¡ãŒã·ã§ã³ãåæ¢ããŸãïŒç°¡åã«èšãã°ã repeatDurã¯ã¢ãã¡ãŒã·ã§ã³ã®ç¶ç¶æéãå¶éããŸããrepeatCountãšã®äž»ãªéãã¯ãã¢ãã¡ãŒã·ã§ã³ãéäžã§åæ¢ã§ããããšã§ãã <animate dur="2s" repeatCount="indefinite" repeatDur="3s" .../>
ã¢ãã¡ãŒã·ã§ã³ã¯2åç®ã®å埩ã®éäžã§äžæããŸãããã¢ãã¡ãŒã·ã§ã³ãããã«éå§ããªãå Žåã¯ã©ããªããŸããïŒæ¬¡ã«ãç§ã®å人ã§ããããªãã®ããã«ã beginå±æ§ãæäŸãããŸãã圌ã¯ãã¢ãã¡ãŒã·ã§ã³ã®éå§æã«è²¬ä»»ãè² ããŸãããã®å±æ§ã¯ãããã€ãã®ã¢ãã¡ãŒã·ã§ã³ã®åæã«ã䜿çšããããããéåžžã«äŸ¿å©ã§ãããåŸã§è©³ãã説æããŸããèµ·åã®éåžžã®é
延ãæå®ããå Žåã¯ãããã¥ã¡ã³ããéããŠããã¢ãã¡ãŒã·ã§ã³ãéå§ããæéãæå®ããŸã <animate begin="1.5s" .../>
1.5ç§åŸã«åçãéå§ãããŸãããè² ã®å€ãæå®ããããšãã§ããŸãããã®åŸãã¢ãã¡ãŒã·ã§ã³ã¯æåããã§ã¯ãªããæå®ãããæéã®åŸã«ãªãå Žæã§éå§ãããŸã <animate begin="-2s" dur="4s" .../>
ã¢ãã¡ãŒã·ã§ã³ã¯ããã¥ã¡ã³ããéããšéå§ãããŸãããäžå€®ããåçãããŸããã¢ãã¡ãŒã·ã§ã³ãã€ã³ã¿ã©ã¯ãã£ãã«ããŸãã éå§å€ãšããŠãã¢ãã¡ãŒã·ã§ã³ãéå§ããã€ãã³ããæå®ã§ããŸããããonããã¬ãã£ãã¯ã¹ã¯ãããŸãããããšãã°ãã¯ãªãã¯ã¹ã«ãŒã¢ãã¡ãŒã·ã§ã³ãäœæããå Žåããonclickãã®ä»£ããã«ã clickããšèšè¿°ããŸã <circle ...> <animate begin="click" .../> </circle>
äžèšã®äŸã§ã¯ãã¢ãã¡ãŒã·ã§ã³ãé©çšãããèŠçŽ ãã¯ãªãã¯ãããšãã¢ãã¡ãŒã·ã§ã³ãéå§ãããŸããå¥ã®èŠçŽ ããã®ã€ãã³ãã§ã¢ãã¡ãŒã·ã§ã³ãéå§ããå Žåã¯ããã®idãæå®ããå¿
èŠããããŸã <circle id="button" .../> ... <animate begin="button.click" .../>
ã¢ãã¡ãŒã·ã§ã³ãéå§ããããã®ããã€ãã®æ¡ä»¶ãæå®ããããšãã§ããŸãããããè¡ãã«ã¯ãããããã»ãã³ãã³ã§åºåã£ãŠãªã¹ãããŸãã <animate begin="click; 0s" .../>
ãã¹ãŠã®ã€ãã³ãããµããŒããããŠããããã§ã¯ãããŸããããã»ãšãã©ã®ããŠã¹é¢é£ã®ã€ãã³ãã¯æ©èœããŸãããããããã¹ãŠãªã¹ãããããã§ã¯ãããŸãããå©çšå¯èœãªã€ãã³ãã¯ããã®ã©ããã«ãã ãŸãããŸãã誰ãç§åŠççªç Žã®æ¹æ³ããã£ã³ã»ã«ããŠããŸãããã¢ãã¡ãŒã·ã§ã³ã¯æåŸãŸã§å°éããã«åèµ·åããŸããã©ãããã°ä¿®æ£ã§ããŸããïŒç°¡åãªäŸãæããŸããããã§ã¯ãªãã¯ãããšã¢ãã¡ãŒã·ã§ã³ãå§ãŸããŸããããã§ããŠãŒã¶ãŒãæŒããªãå Žåã3ç§ã§èªåèµ·åãæäŸãããŸãã <animate begin="click; 3s" dur="7s" .../>
ãã ããåé¡ããããŸãããŠãŒã¶ãŒãèªåã¿ã€ããŒãæŒããå Žåã3ç§ãçµéãããšãã¢ãã¡ãŒã·ã§ã³ãåéãããæåŸãŸã§å°éããŸãããwhenNotActiveã®å€ã®restartå±æ§ã圹ç«ã¡ãŸããåèšã§ã圌ã¯3ã€- åžžã«ããã©ã«ã-ãã€ã§ãã¢ãã¡ãŒã·ã§ã³ãåéã§ããŸã
- whenNotActive-ãŸã åçãããŠããªãå Žåã¯ãã¢ãã¡ãŒã·ã§ã³ãéå§ã§ããŸã
- 決ããŠã§ -ç¡å¹ã¢ãã¡ãŒã·ã§ã³ãåèµ·åããŸã
<animate begin="click; 3s" dur="7s" restart="whenNotActive" .../>
ã»ãšãã©ã®å Žåãåã«äŸåé¢ä¿ãé©åã«æ§ç¯ããããšã«ããããã®å±æ§ãªãã§å®è¡ã§ããŸãããåé¡ã¯è§£æ±ºãããŸããã¢ãã¡ãŒã·ã§ã³ã®åææšæºã€ãã³ãã«å ããŠãã¯ãªãã¯ã®çš®é¡ã«ãã£ãŠãã¢ãã¡ãŒã·ã§ã³ã®éå§ãçµäºãããã³ç¹°ãè¿ãã®ã€ãã³ãããããŸããã€ãã³ãããã€ã³ãããã«ã¯ãã¢ãã¡ãŒã·ã§ã³ã® IDãæå®ãããã€ã³ã beginã endã repeatãããããæå®ããå¿
èŠããããŸã <animate id="pop" begin="click" .../> <animate begin="pop.begin" .../> <animate begin="pop.end" .../>
æåã®2ã€ã§ãã¹ãŠãæ確ãªå Žåãç¹°ãè¿ãã§ãã¹ãŠãããã»ã©æçœã§ã¯ãããŸãããç¹°ãè¿ãã®æ°ã¯æ¬åŒ§ã§å²ãŸãããã®åŸãã¢ãã¡ãŒã·ã§ã³ãéå§ããå¿
èŠããããŸãïŒãã®æ°ãæåŸã®ç¹°ãè¿ãã«ãªãããšã¯ãããŸããïŒ <animate id="flip" repeatCount="5" .../> <animate begin="flip.repeat(2)" .../>
ã¢ãã¡ãŒã·ã§ã³ã¯ãéå§åŸ 2åç¹°ãè¿ãããããŠãªããã¹ãŠã® 2ã¯ãæ
åœè
ã€ãã³ãã«å¯Ÿããé
延ãæå®ããã«ã¯ãå¥ã®å¯èœæ§ããããšãã°ãå¥ã®éå§ãã 2ç§åŸã«ã¢ãã¡ãŒã·ã§ã³ãåçããå Žå <animate id="another" .../> <animate begin="another.begin + 2s" .../>
ãŸãã¯ãå¥ã®ã¢ãã¡ãŒã·ã§ã³ãçµäºãã1ç§åã«ã¢ãã¡ãŒã·ã§ã³ãéå§ããŸã <animate begin="another.end - 1s" .../>
ä»ã«äœãå§ããããšãã§ããŸãã...ãã®ã»ã¯ã·ã§ã³ã«é»è©±ãããã£ãã®ã§ããããäœãã§ããã¯ããªã®ã«ãã§ããŸãããïŒãç§ã®ãæ°ã«å
¥ãã®ä»æ§ã«ãããšãbeginã«ã¯ããã«2ã€ã®å€ãå¿
èŠã§ãã 1ã€ç®ã¯accessKeyã§ãUnicode圢åŒã§æå®ãããããŒãæŒãããšã§ã¢ãã¡ãŒã·ã§ã³ãéå§ããŸãã 2ã€ç®ã¯wallclockã§ããããã¯ããªã¢ã«ã¿ã€ã ã§ã¢ãã¡ãŒã·ã§ã³ã®éå§ã決å®ããŸãããŸããæèšã ãã§ãªããäžè¬ã«å®å
šãªã»ãããæå®ããããšãã§ããŸããæ®å¿µãªããã圌ãã¯èª°äžäººãšããŠåãããããŸããã§ããããããã®å¿
èŠæ§ã¯ãŸã çãããã®ã§ãæ倱ã¯å€§ãããããŸããã <animate begin="accessKey(\u0077)" .../> <animate begin="wallclock(2019-04-09T19:56:00.0Z);" .../>
åé¡ãäœãªã®ãããããªããå€åç§ã®ãã©ãŠã¶ã¯ãããããµããŒãããŠããªãããããã¯å€åäœã...ã¢ãã¡ãŒã·ã§ã³ãäžæã§ããŸããïŒããã¯ã endå±æ§ã䜿çšããŠå®è¡ã§ããŸãã䜿çšæ³ã¯ beginãšåãã§ãããæéãã€ãã³ããªã©ãæå®ããããšãã§ããŸããã芧ã®ãšãããããã¯ã¢ãã¡ãŒã·ã§ã³ãäžæããæåã®ïŒãããŠæåŸã®ïŒæ¹æ³ã§ã¯ãããŸãããrepeatDurããããã¢ãã¡ãŒã·ã§ã³ã®ç¶ç¶æéãä¿®æ£ã§ããããã§ãããŸãã endã§çŽæ¥æéãæå®ããããšãã§ããŸããããã®ç¹åŸŽçãªæ©èœã¯ã€ãã³ããã€ã³ããšå€ã®ãªã¹ããæå®ããæ©èœã§ããäŒæ¯ãšæŽ»åã®ç¶æ
ãæã€èŠçŽ ããããšããŸãã 2çªç®ã®ãã¿ã³ãã¯ãªãã¯ãããšã¢ã¯ãã£ãã«ãªããŸãããããŠãã¢ã¯ãã£ããã£ã®éå§ã§æ®ãã®ã¢ãã¡ãŒã·ã§ã³ãäžæããŸãããã®ãããªåæ§ã®ã¢ã€ãã¢ãå®è£
ã§ããŸã <animate id="idle" end="action.begin" begin="0s" repeatCount="indefinite" .../> <animate id="action" begin="click" .../>
éæ¢ã¢ãã¡ãŒã·ã§ã³ã¯ããã©ã«ãã§éå§ãããŸããèŠçŽ ãã¯ãªãã¯ãããšãã¢ã¯ãã£ããã£ã®ã¢ãã¡ãŒã·ã§ã³ãéå§ãããæ®ãã®ã¢ãã¡ãŒã·ã§ã³ãäžæãããŸã ãå±æ§ã®çµäºãšéå§ãç¥ã£ãŠããããã«ãéå§ãšçµäºã®äž¡æ¹ã§å€ã®ãªã¹ããååŸã§ããŸãããäž¡æ¹ã®å±æ§ã§ãªã¹ããæå®ããå Žåã®ã¢ãã¡ãŒã·ã§ã³ã®åäœã¯ãŸã æ確ã§ã¯ãããŸãããããããããã¯ããæå³ã調æŽå¯èœãªæéãšãããã®éã®ééã§ã®ç¹°ãè¿ãã«ãªããŸã...ããã¯æããã§ã¯ãããŸãããïŒä»ãããã¹ãŠã説æããŸããæåã«ç¥ã£ãŠããã¹ãããšã¯ããªã¹ãå
ã®å€ã®æ°ãäžèŽããå¿
èŠããããšããããšã§ããå€ã®åãã¢ãéå§ -çµäº1ã€ã®ãç¹°ãè¿ãããå®çŸ©ããŸãããããŠããããç¹°ãè¿ããã®çµãããã次ã®ãç¹°ãè¿ããã®å§ãŸããŸã§ã®æéãé
延ã決å®ããŸããç§ã¯ãããããç¹°ãè¿ãããšåŒãã§ããŸãããã¢ãã¡ãŒã·ã§ã³ã¯äžæåæ¢ããŠç¶ç¶ããã®ã§ã¯ãªããäžæãããŠæåããéå§ãããŸããåç¹°ãè¿ãã®æç¶æéãåå¥ã«èª¿æŽããåç¹°ãè¿ãåŸã«ç°ãªãé
延ãèšå®ã§ããããšãããããŸãã <animate dur="3s" begin="1s; 5s; 9s" end = "2s; 8s; 11s" .../>
ãã®äŸã§ã¯ãã¢ãã¡ãŒã·ã§ã³ã«ã¯3ã€ã®ãç¹°ãè¿ããããããŸããæåã¯ããã¥ã¡ã³ããèªã¿èŸŒãã åŸ1ç§ã§å§ãŸãã3ã€ã®ãã¡1ç§ããç¶ããŸããããã®åŸã3ç§ã®é
延ããã®åŸ3ç§ã®å®å
šãªã¢ãã¡ãŒã·ã§ã³ãç¹°ãè¿ããŸããããã§ã«1ç§ã§é
ããŠããŸããã¢ãã¡ãŒã·ã§ã³ã®2ç§åŸã«æåŸã®ç¹°ãè¿ããäžæãããŸãããããã§ãã¢ãã¡ãŒã·ã§ã³ãäžæã§ããŸããïŒè²¯éç®±Keeneeeeã«åœ¹ã«ç«ããªãå±æ§ã2ã€ãããŸããããã«2ã€ã®å±æ§ minãš maxããããŸããååã瀺ãããã«ã minã¯æå°ãå®çŸ©ãã maxã¯æ倧æéãå®çŸ©ããŸããæåã«ã durã repeatCountã repeatDurã®å€ã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ã®ç¶ç¶æéãèšç®ãããŸããçµäºããŸãããã®åŸãååŸãããæéã¯ãminããã³maxã§æå®ããããã¬ãŒã ã«èª¿æŽãããŸããçŽã®äžã§ã¯ãã¹ãŠãçŸããã®ã§ãå®éã«ã©ã®ããã«æ©èœããããèŠãŠã¿ãŸããããC maxã®ã¯ããããäžéå€ãæå®ããå¥ã®å±æ§ã§ãç°¡åã§ããèšç®ãããæç¶æéãmaxæªæºã®å Žåãç¡èŠãããããããé·ãå Žåãã¢ãã¡ãŒã·ã§ã³ã®æç¶æéã¯maxã«çãããªããŸã <animate dur="10s" repeatDur="7s" end="5s" max="4s" .../>
4ç§éäžæãããŸããã minã¯ããã»ã©å¹žéã§ã¯ãããŸããã§ãããå Žåã®èšç®é·ã以äžã®ã¢ãã¡ãŒã·ã§ã³åããããã¯ç¡èŠããããããè«ççã§ãããã ããèšç®ãããæéãminæªæºã®å Žåã...ãç¡èŠãããããšãããã°ãç¡èŠãããªãããšããããŸãããªãã§ïŒãã®ç¬éã¯æ··ä¹±ããããã®ã§ã泚ææ·±ãèªãã§ãã ãããèšç®ãããæéãminæªæºã®å Žåã2ã€ã®ãªãã·ã§ã³ããããŸãã- ã¢ãã¡ãŒã·ã§ã³èªäœãçµãã£ãã®ã§ãã€ãŸã dur * repeatCount < min
<animate dur="2s" repeatCount="2" min="5s" .../>
ãã®ãªãã·ã§ã³ã§ã¯ãminå±æ§ã¯åã«ç¡èŠãããã¢ãã¡ãŒã·ã§ã³ã¯4ç§ã§åæ¢ããŸã - repeatDur end .
ã¢ãã¡ãŒã·ã§ã³ãäžæããè±å¯ãªå±æ§ã®ãããå€ãã®æ··ä¹±ããããŸãããã®çµæãmaxãšminã«ã¯å€§ããªæå³ã¯ãããŸãããããæžãããã¢ãã¡ãŒã·ã§ã³ã¯ãããã®å¿
èŠæ§ãæé€ããããã§ããããŒãã¬ãŒã ã®ç®¡çæ¹æ³ãšæéé¢æ°ã®æå®å Žæãããè¡ãã«ã¯ãå±æ§keyTimesãkeySplinesãcalcModeãç¥ãå¿
èŠããããŸããvaluesã§ãªã¹ããæå®ããããããŒãã¬ãŒã ã宣èšããŸããããããã¯åçã«åæ£ãããŸããkeyTimeså±æ§ã®ãããã§ããç¶æ
ããå¥ã®ç¶æ
ãžã®é·ç§»ãé«éåãŸãã¯äœéåã§ããŸãããŸãããªã¹ã圢åŒã§ããåãã¬ãŒã ã®å€ã瀺ãããŸããå€ã¯ãã¢ãã¡ãŒã·ã§ã³å
šäœã®ç¶ç¶æéïŒ0-0ïŒ
ã0.5-50ïŒ
ã1-100ïŒ
ïŒã«å¯Ÿããæé軞äžã®ããŒãã¬ãŒã ã®äœçœ®ãããŒã»ã³ãã§è¡šããŸããããã€ãã®ã«ãŒã«ããããŸãïŒåå€ã¯0ãã1ãŸã§ã®æµ®åå°æ°ç¹æ°ãè¡šãããªã¹ãå
ã®å€ã®æ°ã¯äžèŽããªããã°ãªããŸãããæåã®å€ã¯0ã§ãæåŸã®1ã¯æ¬¡ã®å€ãåã®ãã®ãã倧ãããªããã°ãªããŸãããå€ãªãã§keyTimesã䜿çšããŠãæå³ããªãããšãç解ããŠãããšæããŸãããããŠä»ãäŸ <animate values="15; 10; 45; 55; 50" keyTimes="0; 0.1; 0.6; 0.9; 1" .../>
ããã©ã«ãã§ã¯ããã¹ãŠã®å€æã¯ç·åœ¢ã«è¡ãããŸãããããå€æŽããã«ã¯ãcalcModeã§å¥ã®ã¢ãŒããæå®ããå¿
èŠããããŸãããããŠãå€ãã®ãªãã·ã§ã³ã¯ãããŸããïŒ- ç·åœ¢ -æšæºå€ã説æã¯äžèŠ
- ããŒã¹ -ããŒãã¬ãŒã éã®é床ãäžå®ã«ãªãããã«æéééãèšç®ãããŸã
- é¢æ£ -è£éãªãã§ããžã£ã³ãã®ããŒãã¬ãŒã éã§ã¢ãã¡ãŒã·ã§ã³ãåãæ¿ãããŸã
- ã¹ãã©ã€ã³ -ããã¯æåå¶åŸ¡ã¢ãŒãã§ãããšèšããŸãïŒããã«ã€ããŠã¯åŸã§ïŒ
æ®å¿µãªããããããã¯ãã¹ãŠçµã¿èŸŒã¿é¢æ°ã§ããããã§ã¯ãCSSã®ããã«\ outãç°¡åã«èŠã€ããããšã¯ã§ããŸããããããã£ãŠããããã®ããŒãºã¯ãç§ããããã¥ã¢ã«ããšåŒãã äœå¶ãæºè¶³ãããå¿
èŠããããŸããç解ããã®ãæãé£ããã®ã¯ããŒã¹ã§ãã®ã§ãç§ã¯ããããã詳现ã«èª¬æããŸããéå§ããã«ã¯ãæšæºã¢ãŒãã§ã®ã¢ãã¡ãŒã·ã§ã³ã®åäœã確èªããŠãã ãããã¢ãã¡ãŒã·ã§ã³ã¯2ç§ç¶ãã3ã€ã®ããŒãã¬ãŒã ããããŸã-åæãäžéãæçµ <animate dur="2s" values="100; 200; 150" .../>
ã¢ãã¡ãŒã·ã§ã³ãèŠããšãããŒãã¬ãŒã éã®ç§»åãå®æçã«çºçããããšãæããã«ãªããŸãã1çªç®ãš2çªç®ã®è·é¢ã¯100ã2çªç®ãš3çªç®ã®è·é¢ã¯50ã§ããæåã®æ¹æ³ã®ååãåçŽãªèšç®ã«ãããèŠçŽ ãæåã®ã»ã°ã¡ã³ãã®2åã®é床ã§2çªç®ã®ã»ã°ã¡ã³ããééããããšãæããã«ãªããcalcMode = "paced"ãè¿œå ããŠãå€æŽå
容ã確èªããŸãã <animate dur="2s" values="100; 200; 150" calcMode="paced" .../>
ãããŠãèŠçŽ ã®é床ãå€æŽãããŸãããçŸåšã§ã¯ãåãé床ã§è·é¢å
šäœãã«ããŒããããã«èšèšãããŠããŸããã€ãŸããèŠçŽ ã®äž¡æ¹ã®ã»ã°ã¡ã³ããåäžã«ç§»åããŸããããã§ãã¹ãã©ã€ã³ã¢ãŒããškeySplineså±æ§ãèŠãŠã¿ãŸãããã圌ãã¯ããã€ãã®é¡äŒŒç¹ãæã£ãŠããŸã...ããŒã...ã¹ãã©ã€ã³ãæåã¢ãŒããå®çŸ©ããå ŽåãkeySplineså±æ§ã¯ãã®ã¢ãŒãã®å€ãå®çŸ©ããŸããæããã«ãäžæ¹ãä»æ¹ãªãã§ã¯æ©èœããŸãããkeySplinesã®å€ã¯ã3次ããžã§ã®2ç¹ã®åº§æšã瀺ããããªã¹ãã«ãã£ãŠèšå®ãããŸããããžã§ç«æ¹é¢æ°ã®è©³çŽ°ããã¯ãåãã®åŒ·ãã決å®ããé¢æ°ã§ãã0ãã1ãŸã§ã®4ã€ã®æµ®åå°æ°ç¹æ°ã§æ§æãããäžè¬çã«ã¯æ¬¡ã®ããã«ãªããŸãïŒ3次ããžã§ïŒx1ãy1ãx2ãy2ïŒãæ°å€ã®ãã¢ã¯åº§æšã§ãããæ²ç·ãå®çŸ©ãã2ã€ã®ãã€ã³ãã圢æããŸãããããäžã®ãã¥ãŒããã¯ããžã§ã®è©³çŽ°ãèªãããšãã§ããŸãããã¥ãŒããã¯ããžãšãæ§ç¯ããã«ã¯ããªã³ã©ã€ã³ãµãŒãã¹ã䜿çšããããšããå§ãããŸããããã§ã¯ãäŸãèŠãŠå€ãè©Šãããšãã§ããŸãã å
ã®å€ã®æ°keySplines㯠1ããå°ãããªããã°ãªããªãå€ãããã¯ãããŒãã¬ãŒã ã®å€ã§ã¯ãªãããããã®éã®ééã®å€ã瀺ãããã§ãã <animate values="100; 200; 150" keySplines=".25 .1 .25 1; 0 0 .58 1" calcMode="spline" .../>
ããžã§é¢æ°ã®ãã€ã³ãã®åº§æšã¯ã¹ããŒã¹ãŸãã¯ã³ã³ãã§åºåããããªã¹ãå€ã¯ã»ãã³ãã³ã§åºåãããŸããæåã®æãäžå¿«ãªãã€ãã¹ã¯ããã¹ãŠã®ããŒãã¬ãŒã ã«å
±éã®æéé¢æ°ãèšå®ã§ããªãããšã§ããåãã¬ãŒã ã«é¢æ°ãè€è£œããå¿
èŠããããŸããããªãã¯å±æ§ã®é¢æ°ãæå®ãããå Žåã¯-ã»ã«ã³ããã -ãžããŸãã¯ã«ãã£ãŠãå¿
èŠæŸèæãäŸé Œããå¿
èŠããã keyTimeså±æ§ãå€ã§ã1ã0ã <animate from="10" to="50" keyTimes="0; 1" keySplines=".25 .1 .25 1;" calcMode="spline" .../>
ãå Žåã¯ä»£ããã®ãã - ã«äœ¿ãå€ãäºã€ã®å€ããããã®åé¡ã¯ãªããªããŸãã¢ãã¡ãŒã·ã§ã³ã®åæžãå®çŸããããã«ã©ã®ããã«ïŒãŸããã¡ãã£ãšããçè«-环ç©ã¢ãã¡ãŒã·ã§ã³ã®æ¬¡ã®ç¹°ãè¿ãã¯ãåã®ã¢ãã¡ãŒã·ã§ã³ãçµäºãããšããããç¶ããŸããã¯ãŒã«ã§ã¯ãããŸãããããã»ã©ã§ã¯ãããŸãã...环ç©ã¢ãã¡ãŒã·ã§ã³ãç¹°ãè¿ãå
ã§ã®ã¿æ©èœãããšããäºå®ã¯æ®å¿µã§ããã¢ãã¡ãŒã·ã§ã³ã环ç©ããæ¹æ³ã«ã€ããŠïŒçŽ¯ç©ããå±æ§ïŒããã©ã«ãã§ã¯ noneïŒãèšå®ããŠåèšããå¿
èŠããããŸã <animate by="100" repeatCount="3" accumulate="sum".../>
å€ãŸãã¯from - toã䜿çšããå Žåãæåãé€ããã¹ãŠã®ç¹°ãè¿ãã¯ãadditive = "sum"ã®ããã«åäœããããšã«æ³šæããŠãã ããã1ã€ã ããæå®ãããŠããå Žåã环ç®ã¯ç¡èŠãããŸãã茪éã®ã¢ãŒãã£ã³ã°ãç解ããããã§åºæ¬ã説æããã®ã§ãä»åºŠã¯æ¬åœã«ã¯ãŒã«ã§è€éãªãã®ã«é²ã¿ãŸãããã誰ãããã®ã»ã¯ã·ã§ã³ã®ããã ãã«ãã®èšäºãéãããšç¢ºä¿¡ããŠããŸãã茪éãã¢ãŒãã£ã³ã°-ãã®ã¢ãã¡ãŒã·ã§ã³ã®å±æ§ã¯ãdã¯ãã¿ã°æã£ãŠãã¹ããªããã¹ã ãŒãºã«å³åœ¢ã®åœ¢ç¶ãå€æŽããå Žåã®åœ±é¿ãäœæããããšãã§ããŸããçŸåšãçµã¿èŸŒã¿ããŒã«ã§ã¯ãããã¯SMILã䜿çšããŠã®ã¿å®è¡ã§ããŸããã§å€ã¯ãèŠçŽ ãééããdå±æ§ã®å€ã®ãªã¹ãã瀺ããŸãããŸãã䜿çšããããšãã§ããŸããã - ã«ãäžè¬ã«ãã¢ãŠãã©ã€ã³ã¢ãŒãã¯æ¬¡ã®ããã«ãªããŸã <animate attributeName="d" values=" 1; 2; ..." .../>
次ã«ããã®ããã»ã¹ã®è€éããèŠãŠãããŸããããã¿ã³ã¯ã«ãã人ã®å Žåãdå±æ§ã«ã¯ãã€ã³ãã®ã»ãããå«ãŸããŠããããããã®ãã€ã³ãã¯é çªã«æ¥ç¶ãããŠå³åœ¢ã圢æããŸãããã詳现ã«èª¿ã¹ããšãå€ã®ãªã¹ããCNCãã·ã³ïŒãŸãã¯ã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®ã¬ãã¹ã³ã§ã¯ããããããïŒã®ã³ãã³ãã»ããã«äŒŒãŠããããšã«æ°ä»ãã§ããããå€ãã®ããŒã ãããããã«ãŒãœã«ã®ç§»åããæ
åœããããŒã ããæç»ããæ
åœããããŒã ãæ²ç·ãã©ãã ãçŽç·ã«ãªãããªã©ããããŸãã ïŒãã¹ãŠã®ããŒã ãããã«ããŸãïŒãã¢ãŒãã£ã³ã°ãæ©èœããã«ã¯ãã³ãã³ãã®æ°ãäžèŽããåãã¿ã€ãã§ããå¿
èŠããããŸãããã®æ¡ä»¶ãç¡èŠãããšãè£éã¯è¡ãããŸãã-ã¢ãã¡ãŒã·ã§ã³ã¯ããç¶æ
ããå¥ã®ç¶æ
ã«ãžã£ã³ãããŸããcalcMode = "discrete"ãäžèŠè€éã§ã¯ãããŸããããæ²ç·ã®ãªã圢ç¶ãã¢ãã¡ãŒã·ã§ã³åããå Žåã¯ããã§ããããã§ãªããã°ãå°é£ãå§ãŸããŸããè€éãªã°ã©ãã£ãã¯ã¹ãäœæããå Žåã誰ãããã¯ã¿ãŒãšãã£ã¿ãŒã䜿çšãããã³ãŒãããå¯èœãªéãæé©åããç¿æ
£ããããŸããããã¯éåžžãã©ã¹ã§ãããç§ãã¡ã®å Žåã§ã¯ãããŸãããåºåã§ã¯ããããã 1ã€ã®é·ãã®ãªã¹ãããããŸãããç°ãªãã¿ã€ãã®ããŒã ã§ãããããã¯ã«ãŒã«ã®1ã€ã«éåããŠããŸãã Adobe Illustratorã䜿çšããŸããããåé¡ã解決ã§ãããªãã·ã§ã³ãèŠã€ãããŸããã§ãããæã
ããã£ãžãŒã³ã®ç¥ã
ã®æå¿ã«ãã£ãŠããã®åé¡ã¯ååšããŸãããããããçå£ã«ãåé¡ã®ç¢ºçã¯ã圢ç¶ãšã¢ãŒãã£ã³ã°ã®è€éãã«çŽæ¥æ¯äŸããŸããçŸæç¹ã§ã¯ããã®åé¡ã®å¯äžã®è§£æ±ºçã¯ãShape Shifter Webã¢ããªã±ãŒã·ã§ã³ã§ã®ãæ²ãã£ãã³ãŒããã®å€æã§ããããã¯ç§ã䜿çšãããªãã·ã§ã³ã§ããç Žæããã³ãŒãã®ä¿®åŸ©ã«å ããŠãShape Shifterã䜿çšãããšãçµæã確èªãããããªãã·ã§ã³ã§å¥ã®çš®é¡ã®ã¢ãã¡ãŒã·ã§ã³ãè¿œå ããããçµæã䟿å©ãªåœ¢åŒã§ãšã¯ã¹ããŒããããã§ããŸãã次ã¯ããã®ãããªçŸããã¢ãã¡ãŒã·ã§ã³ãäœæããæ¹æ³ã段éçã«èª¬æãããã¥ãŒããªã¢ã«ã§ããæããŠïŒ: SVG Adobe Illustrator, , Shape Shifter . CSS, SMIL .
. Illustrator. , . 200x200 .
, , . , , «». ,
. . « »
, . , , ,
. , , . , . SVG , . âŠ
. , . SVG . ( Illustrator )
, , Illustrator
<path> ,
<circle> . , . , , . - (
SVGO ), . .
d , ) <?xml version="1.0" encoding="utf-8"?> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve"> <style type="text/css"> .st0{fill:#D38911;} .st1{fill:#87872B;} .st2{fill:#CEB629;} .st3{fill:none;stroke:#DD913E;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:12,200;} </style> <g id="Pulse"> <g> <path class="st0" d="M100,87c44.1,0,80,35.9,80,80s-35.9,80-80,80s-80-35.9-80-80S55.9,87,100,87 M100,82c-46.9,0-85,38.1-85,85 s38.1,85,85,85s85-38.1,85-85S146.9,82,100,82L100,82z"/> </g> </g> <g id="_x3F__1_"> <path id="side" class="st1" d=" "/> <path id="front" class="st2" d=" "/> </g> <g id="Particles"> <line class="st3" x1="80" y1="162.9" x2="42" y2="59.1"/> <line class="st3" x1="90.1" y1="148.8" x2="59.8" y2="28.8"/> <line class="st3" x1="107.9" y1="155.6" x2="124.9" y2="15.9"/> <line class="st3" x1="94.4" y1="160.4" x2="154.3" y2="7.2"/> <line class="st3" x1="119.3" y1="157" x2="159.2" y2="75.5"/> <line class="st3" x1="98" y1="169" x2="87.7" y2="10.7"/> <line class="st3" x1="80.4" y1="147.6" x2="63.2" y2="14.1"/> </g> </svg>
<?xml version="1.0" encoding="utf-8"?> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"> <style type="text/css"> #Pulse{fill: none; stroke: #D38911; stroke-width: 5;} #side{fill:#87872B;} #front{fill:#CEB629;} .particles{fill:none;stroke:#DD913E;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:12,200;} </style> <circle id="Pulse" cx="100" cy="167" r="85"/> <g id="Sign"> <path id="side" d=" "/> <path id="front" d=" "/> </g> <g id="Particles"> <line class="particles" x1="80" y1="162.9" x2="42" y2="59.1"/> <line class="particles" x1="90.1" y1="148.8" x2="59.8" y2="28.8"/> <line class="particles" x1="107.9" y1="155.6" x2="124.9" y2="15.9"/> <line class="particles" x1="94.4" y1="160.4" x2="154.3" y2="7.2"/> <line class="particles" x1="119.3" y1="157" x2="159.2" y2="75.5"/> <line class="particles" x1="98" y1="169" x2="87.7" y2="10.7"/> <line class="particles" x1="80.4" y1="147.6" x2="63.2" y2="14.1"/> </g> </svg>
, . , ,CSS , . . , . . CSS . :
#Pulse{fill: none; stroke: #D38911; stroke-width: 5; transform: rotateX(80deg);} ._transformer{transform-box: fill-box; transform-origin: center;}
,
_transformer , , . «»
<animateTransform> .
- :
, Illustrator? âŠâ , . , . ,
<path> , .
, ! â , . , â .
circle , .
animate , 3
<circle id="Pulse" class="_transformer" cx="100" cy="167" r="0"> <animate id="doPulse" attributeName="r" values="0;85;" dur=".8s" begin="Sign.click" calcMode="spline" keySplines="0,0,.58,1"/> <animate attributeName="stroke-width" values="5;12;" dur=".8s" begin="doPulse.begin"/> <animate attributeName="opacity" values="0.5;1;1;0" keyTimes="0;0.2;0.5;1" dur=".8s" begin="doPulse.begin"/> </circle>
, CSS, . : , , . - :
. - , . ,
<linearGradient id="light-gradient"> <stop offset="0%" stop-color="#ffffff00"/> <stop offset="10%" stop-color="#FFF"/> <stop offset="90%" stop-color="#FFF"/> <stop offset="100%" stop-color="#ffffff00"/> </linearGradient> <mask id="light-mask"> <rect y="0" x="90" class="_transformer" width="20" height="220" fill="url(#light-gradient)" /> </mask>
, . , , . ,
<use> ,
<path> ;
<defs> <defs> <path id="question" d=" "/> </defs> ... <use id="front" href="#question"/> <use id="light" href="#question" mask="url(#light-mask)"/>
, , . . ,
#light-mask rect{ animation: highlight 4s infinite; } @keyframes highlight { 0% { transform: translate(-100px,0) rotate(-50deg); } 30% { transform: translate(100px,0) rotate(-50deg); } 100% { transform: translate(100px,0) rotate(-50deg); } }
. . CSS , SMIL.
, . â , . ,
<g id="Sign" class="_transformer"> <path id="side" d=" "/> <use id="front" href="#question"/> <use id="light" href="#question" mask="url(#light-mask)"/> <animateTransform id="idle" attributeName="transform" type="translate" values="0,0;0,-5;0,0" dur="6s" begin="0s; jump.end" end="click" repeatCount="indefinite" /> <animateTransform id="jump" attributeName="transform" type="translate" calMode="spline" values="0,0;0,10;0,-35;0,5;0,0" keyTimes="0;0.1;0.35;0.6;1" keySpline="0,0,.58,1;0,0,.58,1;.42,0,1,1;0,0,.58,1" dur="1s" begin="idle.end" /> </g>
,, , . ,
additive="sum" <animateTransform attributeName="transform" type="scale" additive="sum" values="1,1;1.1,0.8;0.9,1.2;1.1,0.8;1,1" keyTimes="0;0.1;0.35;0.7;1" dur="1s" begin="idle.end" />
, , . çµæïŒ
.
? - , , .
stroke-dashoffset , . ,
- . ,
<g id="Particles"> ... </g> <g id="Sign" class="_transformer"> ... </g>
, ,
.particles{ opacity:.7; stroke-width:0; ... }
, . ,
@keyframes sparks { 0% { stroke-dasharray: 20,200; stroke-width: 5px; } 100% { stroke-dasharray: 4,200; stroke-width: 0px; stroke-dashoffset: -180; } }
, . , , «». : CSS , , . SMIL, 3 , , 7. , , âŠ
â , - , . CSS, SMIL.
Particles_active ,
.Particles_active .particles{ animation: sparks .7s; }
<set> , , (
set )
<g id="Particles"> <line class="particles" x1="80" y1="162.9" x2="42" y2="59.1"/> ... <line class="particles" x1="80.4" y1="147.6" x2="63.2" y2="14.1"/> <set attributeName="class" to="Particles_active" dur=".7s" begin="jump.begin + .5s"/> </g>
:. , , . 3D , . , , .
Adobe Illustrator, . , . - , . ,
d .
, . Shape Shifter.
, , . , Shape Shifter, SVG . Shape Shifter , «» SVG. Illustrator. , . , pathData
, , toValue. . «»
. ,
, , Shape Shifter , , , , . , toValue fromValue .
. ,
<animate attributeName="d" calMode="spline" values=" 1; 2; 1" dur="5s" keySpline=".42,0,.58,1;.42,0,.58,1" repeatCount="indefinite" />
1 â , 2 â. Codepen.
, SVG â , . , ,
<ã»ãã>
setã¿ã°ã¯ãè£éã§ããªãããšãé€ããŠãanimateã®ççž®ããŒãžã§ã³ã§ããç¹å®ã®æéãã€ãŸããå±æ§ãå³åº§ã«å€æŽããããã«äœ¿çšãããŸããã¹ã€ããã®åçã§åäœããŸããçµæãšããŠãè£éã«é¢é£ä»ããããå±æ§ãç¡èŠãã环ç©ã¢ãã¡ãŒã·ã§ã³ãŸãã¯çžå¯Ÿã¢ãã¡ãŒã·ã§ã³ããµããŒãããŸãããå€ã¯å±æ§ã«ãã£ãŠã®ã¿èšå®ãããŠããã®å±æ§ãå€ããããã«ãã£ãŠç¡èŠããŸã <set attributeName="cx" to="200" begin="click" dur="5s" .../>
èŠçŽ ã¯ã¯ãªãã¯ãããšäœçœ®ãå€ããã5ç§åŸã«å
ã®äœçœ®ã«æ»ããŸã durå±æ§ãæå®ããªãå ŽåãèŠçŽ ã¯ããã¥ã¡ã³ããåããŒãããããŸã§ãã®ç¶æ
ã®ãŸãŸã«ãªããŸãããã以å€ã¯ã animateã«äŒŒãŠããŸãã<animateTransform>
ååã瀺ãããã«ãããŸããŸãªå€æãèŠçŽ ã«é©çšããããã«äœ¿çšãããŸãããã¹ãŠã®ã¿ã€ãã®å€æã¯ãCSSå€æãšåãã§ããCSSå€æãšSMILå€æãåæã«äœ¿çšãããšããããã¯äºãã«ãªãŒããŒã©ã€ãããããã1ã€ã®ãã®ã䜿çšããããéè€ããªãããã«ç£èŠããããšããå§ãããŸããå€æããæ¹æ³ïŒã¢ãã¡ãŒã·ã§ã³åãããå±æ§ã¯transformã§ããå€æã¢ãŒãã¯typeå±æ§ã§ç€ºããã移åãå転ãã¹ã±ãŒãªã³ã°ã軞ã«æ²¿ã£ãã·ããã®4çš®é¡ã®å€ãåãå
¥ããŸããtranslate-èŠçŽ ãçŸåšã®äœçœ®ã«å¯ŸããŠçžå¯Ÿçã«ç§»åããŸãããã©ãŒããã[xãy]ã®ãªãã»ãããåããŸããããã§y ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã§ã <animateTransform attributeName="transform" type="translate" from="0, -10" to="0, 10" .../>
Yã«ä¿ã移åäœã¯ã軞å転ããå転äžå¿ããçŽéšæãå転ã- ãå転è§åºŠãšå転äžå¿ã®åº§æš [degãxãy]ãå€ãšããŠåããŸããäžå¿ã®åº§æšã¯ãªãã·ã§ã³ã§ããããã©ã«ãã§ã¯ãå転ã®äžå¿ã¯SVGããã¥ã¡ã³ãã®å·Šäžé
ã«ãããŸã <animateTransform attributeName="transform" type="rotate" from="0, 150, 150" to="45, 150, 150" .../>
座æšã150ã150ã®ç¹ãäžå¿ã«45床å転ã ãŸãããŸãã座æšã®ã»ãã«ããŒã»ã³ããæå®ã§ãã transform-originCSSããããã£ã䜿çšããŠãå転ã®äžå¿ãå€æŽã§ããŸããããã©ã«ãã§ã¯ãããŒã»ã³ããŒãžã¯ããã¥ã¡ã³ãå
šäœã®ãµã€ãºã«åŸã£ãŠèšç®ããããããããŒã»ã³ããŒãžã¯èŠçŽ ã«å¯ŸããŠèšç®ãããããã transform-bââox CSSããããã£ã fill-box valueã§èšå®ããå¿
èŠããããŸããã¹ã±ãŒã« -ã¢ã€ãã ãæ¡åŒµãå€ãšããŠãäž¡æ¹ã®è»žã«å¯Ÿã㊠[scale]圢åŒã®æµ®åå°æ°ç¹æ°ã䜿çšããããå軞ã«å¯ŸããŠåå¥ã« [scaleXãscaleY]ã䜿çšããŸãïŒ1ã¯èŠçŽ ã®éåžžã®ãµã€ãºã«å¯Ÿå¿ããŸãïŒãå€æããã¯ã¹ãå€æŽããªãå Žåäžã§è¿°ã¹ãããã«ãèŠçŽ ã¯ããã¥ã¡ã³ãå
šäœã«å¯ŸããŠã¹ã±ãŒãªã³ã°ãããŸããèŠçŽ ã®åšãã®ç©ºãã¹ããŒã¹ãããã«äŒŽã£ãŠå€åãããããèŠèŠçã«ã¯èŠçŽ ã暪ã«ç§»åããŠããããã«èŠããŸã <animateTransform attributeName="transform" type="scale" from="1, 1" to="2, 1" .../>
X軞ã«æ²¿ã£ãŠèŠçŽ ãåŒã䌞ã°ããŸã skewXãŸã㯠skewY- 軞ã«å¯ŸããŠèŠçŽ ãã·ããããŸããå€ã¯åŸæè§ [deg]ãåããŸããããã©ã«ãã§ã¯ãã·ããã®äžå¿ã¯å·Šäžé
ãªã®ã§ã transform-bââoxããã³ transform-originã䜿çšããåããžã§ãŒã¯ã¯ãä»ã®å€æãšåãããã«æ©èœããŸãã <animateTransform attributeName="transform" type="skewX" from="0" to="45" .../> <animateTransform attributeName="transform" type="skewY" from="90" to="0" .../>
Yã§ã®Xã«å¯Ÿããäžã€ã®ç§»åãä»ã®ç·åãšãªãŒããŒã©ã€ãå€æ
㧠animateTransform貯èãšçžå¯Ÿçãªã¢ãã¡ãŒã·ã§ã³ãäœãããããã§ã¯å±æ§ã«ããããšã¯å¯èœæ·»å ç©ç°ãªãåäœãããŸããreplaceã®å€ã§ã¯ãå€æã¯ä»¥åã®ãã¹ãŠããªãŒããŒã©ã€ãããŸããåèšå€ã§ã¯ãå€æã¯åã®å€ãšåèšãããŸã <rect transform="skewY(115)" ...> <animateTransform type="translate" from="-10" to="10" additive="replace" .../> <animateTransform type="rotate" from="0" to="90" additive="sum" .../> </rect>
ãã®äŸã§ã¯ãé·æ¹åœ¢ã®ã·ãããåå®çŸ©ãããŠç§»åããã³å転ããŸã<animateMotion>
ãã¹ã«æ²¿ã£ãèŠçŽ ã®åããã¢ãã¡ãŒã·ã§ã³åããããã«å¿
èŠã§ããanimateMotionã®æ¯æäœã¯å±æ§ã¢ãã¡ãŒã·ã§ã³ããç¬èªã®3ãæã£ãŠãã- ãã¹ãå転ãããŒãã€ã³ãããè»è·¡ãå®çŸ©ããããã®ãªãã·ã§ã³ããã€ãã®æ¹æ³ã§ã¢ãŒã·ã§ã³ã®è»è·¡ãå®çŸ©ã§ããŸã-䜿ãæ
£ããfromãtoãbyããŸãã¯valueså±æ§ãæ°ããpathå±æ§ããŸãã¯å<mpath>ã¿ã°ã䜿çšããŸããåªå
é äœãäžããæ¹æ³ããªã¹ãããŸããããåãé åºã§èª¬æããŸããå±æ§ããããžãã«ãã£ãŠã¯ãç¹ã®åº§æšãæå®ããå€ãšåãããã§ã«ãªã¹ãã« <animateMotion from="0,0" to="50,100" .../> <animateMotion values="0,0; 0,100; 100,100; 0,0" .../>
ãã®æ¹æ³ã®å¹æã¯ãå€äœã®éåžžã®å€æã«å¹æµããŸããèŠçŽ ã¯ãããç¹ããå¥ã®ç¹ã«çŽç·çã«ç§»åããŸãããããŠãããã§ãã¡ããã©animateTransformã®ããã«ã座æšã¯çžå¯Ÿçã§ãããã€ã³ã0,0ã¯ãããã¥ã¡ã³ãã®å·Šäžé
ã§ã¯ãªããã¿ãŒã²ããèŠçŽ ã®çŸåšã®äœçœ®ã瀺ããŸãããã®æ©èœã¯ãè»éã決å®ããä»ã®æ¹æ³ã«ååšããŸããpathå±æ§ã¯ãdå±æ§ãšåæ§ã«ãäžé£ã®ã³ãã³ããæå®ããŸããdå±æ§ã§ã³ãã³ããå³ã®ã¢ãŠãã©ã€ã³ãšããŠè§£éãããå Žåãpathå±æ§ã§ã¯ã³ãã³ãã¯èŠçŽ ã移åããç·ã«ãªããŸãããã€ã³ãã®åº§æšãçžå¯Ÿçãªã®ã§ããã¹ã¯ãã€ã³ã0,0ããå§ãŸããŸã <animateMotion path="M 0 0 c 3.4 -6.8 27.8 -54.2 56 -37.7 C 73.3 -27.5 89.6 -5.1 81.9 5.9 c -5.8 8.3 -24.7 8.7 -45.4 -0.4" .../>
ãã®ãã¹ã¯ãã®ãããªæ²ç·ãèšè¿°ããŸãæåŸã®æ¹æ³ã¯ããµãŒãããŒãã£ã®<path>èŠçŽ ãpathãšããŠäœ¿çšããããšã§ãããããè¡ãã«ã¯ããã®èŠçŽ ãžã®ãªã³ã¯ã<mpath>ã¿ã°ã§æå®ããå¿
èŠããããã¿ã°èªäœã<animateMotion>å
ã«é
眮ããå¿
èŠããããŸãããã®ãªãã·ã§ã³ã«ã¯ãçžå¯Ÿåº§æšãšåãæ©èœããããŸããåºæ¬çã«ããã®ã¡ãœããã¯èŠçŽ ã®då±æ§ã®å€ã<path>å±æ§ã«ãã³ããŒãããŸã <path id="movement" .../> ... <animateMotion ...> <mpath href="#movement"/> </animateMotion>
ãã¹ãå®çŸ©ããèŠçŽ ã¯ãããã¥ã¡ã³ãã«è¡šç€ºãããªãããšããããŸãã<defs> ã§åçŽã«å®çŸ©ããããšãã§ããŸãèŠçŽ ãè»éã«å¯Ÿã㊠å転ãããŸãå転å±æ§ã䜿çšããŠãèŠçŽ ã移åæ¹åã«å転ãããããšãã§ããŸãã 3çš®é¡ã®å€ãåãå
¥ããŸãïŒ autoã auto-reverseãããã³åºŠåäœã®å転ã瀺ãæ°å€ <animateMotion rotate="auto" .../>
ããã©ã«ãã§ã¯ãrotateã¯0 ã§ããæ°å€ã¯ãã¹ãŠãã¢ãã¡ãŒã·ã§ã³å
šäœã®è§åºŠããã£ããã£ããŸããèªåã¢ãŒãautoããã³auto-reverseã¯ãããããèŠçŽ ã®å転è§åºŠããã¹ã«æ¥ç·ã§å€æŽããŸãããããŠããããã¯ãã®æ¥ç·ã®æ¹åãç°ãªããŸããã§èªåãªãããããã¯ãåæ¹ã«åããããŠãããªãŒããªããŒã¹åãã¹ã«æ²¿ã£ãåããå¶åŸ¡ããæ¹æ³ã¯ïŒè»è·¡ã¯ãéå§ç¹ãšçµäºç¹ãæã€æ²ç·ã§ããããããã®ç¹ã¯ããããçªå·0ãš1ã§ç€ºãããŸããæ²ç·äžã®ä»»æã®äœçœ®ã¯ããã®ç¯å²ã®æ°å€ã«ãã£ãŠæ±ºå®ã§ããŸããkeyPointså±æ§ã«ãã€ã³ãããªã¹ãããããšã«ããããã¹ã«æ²¿ã£ãããããçš®é¡ã®åããå®çŸ©ã§ããŸããããããããã¯åããå¶åŸ¡ããã®ã«ååã§ã¯ãããŸããããã®ããã«ã¯ãå±æ§ã®ã·ã¹ãã å
šäœãå¿
èŠã§ãããŸããcalcModeãlinearãŸãã¯splineã«èšå®ããå¿
èŠããããŸããä»ã®ã¿ã°ãšã¯ç°ãªããanimateMotionã¯ããã©ã«ãã§ããŒã¹ã«èšå®ãããŸãïŒäœããã®çç±ã§ãã¢ãã¡ãŒã·ã§ã³ã¯ãã®ã¢ãŒãã§ã¯æ©èœããŸããïŒãå±æ§ãæå®ããå¿
èŠããããŸããkeyTimeså±æ§ããããã®æé ãå®äºããããšã«ãã£ãŠã®ã¿ãã¢ãã¡ãŒã·ã§ã³ã¯æ£åžžã«æ©èœããŸã <animateMotion keyPoints="0.5; 1; 0; 0.5" keyTimes="0; 0.25; 0.75; 1" calcMode="linear" .../>
ãã®äŸã§ã¯ãã¢ãã¡ãŒã·ã§ã³ã¯ãã¹ã®äžå€®ã§éå§ããæåŸã«ç§»åããŠããæåã«ç§»åããäžå€®ã§åã³ç§»åãçµäºããŸãPSanimateMotionãæ±ããšãCSSã§ãåãããšãã§ãããšããæ
å ±ã«åºäŒããŸããããããããã®èšäºã®çµããã«ã¯ãããã«å¯ŸåŠãã匷ãã欲æ±ããããŸããã§ãããæ奜家ã®ããã«ãç§ã¯ããã¥ã¡ã³ããžã®ãªã³ã¯ãæ®ããŠããŸããç¹å¥ãªæè¬
èšäºãä¿®æ£ããããã®éæ¹ããªãä»äºã®ããã®ããŒã