CSSã¢ãŒã·ã§ã³ãã¹ã®åãè§£ãæŸã¡ãæµåçã§éç·åœ¢ãªã¢ãã¡ãŒã·ã§ã³ãäœæããŸããããæ¬ã¬ã€ãã¯è€éãªè»éãããã©ãŒãã³ã¹ãã°ããŒãã«Webéçºã®ãã¹ããã©ã¯ãã£ã¹ãç¶²çŸ ããŠããŸãã
CSSã¢ãŒã·ã§ã³ãã¹ããã¹ã¿ãŒããïŒé åçãªãŠã§ãäœéšãå®çŸããè€éãªã¢ãã¡ãŒã·ã§ã³è»éã®äœæè¡
ãŠã§ãéçºã®ãã€ãããã¯ãªäžçã«ãããŠãé åçãªã¢ãã¡ãŒã·ã§ã³ã¯ãã¯ãåãªãè£ é£Ÿã§ã¯ãããŸãããçŽæçã§èšæ¶ã«æ®ãã髿§èœãªãŠãŒã¶ãŒäœéšãåµåºããããã«äžå¯æ¬ ãªèŠçŽ ãšãªã£ãŠããŸãããã©ã³ãžã·ã§ã³ãããŒãã¬ãŒã ãšãã£ãåŸæ¥ã®CSSã¢ãã¡ãŒã·ã§ã³æè¡ã¯ãèŠçŽ ãçŽç·ãåçŽãªååŒ§ã«æ²¿ã£ãŠã¢ãã¡ãŒã·ã§ã³ãããããã®å ç¢ãªæ©èœãæäŸããŸãããçã«è€éã§éç·åœ¢ãªåããæ±ããããããžã§ã³ã«ã¯ããã°ãã°åäžè¶³ãšãªããŸãã
補åç»åãäžå¿ç¹ã®åšããæžŠå·»ãããã«åããããããŽãç¹å®ã®ãã©ã³ãã«ãŒãããªãã£ãããããŒã¿ãã€ã³ããå°å³äžã®æ£ç¢ºãªå°ççã«ãŒãããã©ã£ãããã€ã³ã¿ã©ã¯ãã£ããªãã£ã©ã¯ã¿ãŒãã«ã¹ã¿ã ã®è¿·è·¯ãé²ãã ãããã·ããªãªãèããŠã¿ãŠãã ããããã®ãããªè€éãªã¢ãã¡ãŒã·ã§ã³è»éã«å¯ŸããŠãtransform: translate()
ãrotate()
ãã¿ã€ãã³ã°é¢æ°ã®çµã¿åããã ãã«é Œããšãæ£ç¢ºæ§ãšæµåæ§ããã£ãŠå®çŸããã®ã¯ãäžå¯èœã§ã¯ãªãã«ããŠããéåžžã«é¢åã«ãªããŸãã
ãŸãã«ããã§CSSã¢ãŒã·ã§ã³ãã¹ãã²ãŒã ãã§ã³ãžã£ãŒãšããŠç»å ŽããŸããå ã ã¯CSS Motion Path Module Level 1ãšããŠèæ¡ãããçŸåšã¯CSS Animations Level 2ã«çµ±åãããŠãããã®åŒ·åãªCSSã¢ãžã¥ãŒã«ã¯ãéçºè ãä»»æã«ãŠãŒã¶ãŒå®çŸ©ãããã¹ã«æ²¿ã£ãŠèŠçŽ ã®åããå®çŸ©ããããšãå¯èœã«ããŸããããã«ãããèŠçŽ ã¯çŽç·ãåçŽãªå匧ã®å¶çŽããè§£æŸãããæ¯é¡ã®ãªãå¶åŸ¡ãšåªé ãããã£ãŠãè€éãªã«ã¹ã¿ã è»éãé²ãããšãã§ããããã«ãªããŸãããã®çµæãäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠãããè±ãã§æŽç·ŽãããããããŠééããªãé åçãªãŠã§ãäœéšãå®çŸããŸãã
ãã®å æ¬çãªã¬ã€ãã§ã¯ãCSSã¢ãŒã·ã§ã³ãã¹ã®ããããåŽé¢ãæ·±ãæãäžããŠãããŸããåºæ¬çãªããããã£ãæ¢æ±ããSVGããŒã¿ãçšããè€éãªãã¹ã®å®çŸ©æ¹æ³ãè§£ãæãããå®è·µçãªã¢ãã¡ãŒã·ã§ã³æè¡ãäŸç€ºããããã«ã¯ããã©ãŒãã³ã¹æé©åããã©ãŠã¶äºææ§ããããŠçã«ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠæ¥µããŠéèŠãªã¢ã¯ã»ã·ããªãã£ãšã¬ã¹ãã³ã·ãæ§ãšãã£ãé«åºŠãªèæ ®äºé ã«ã€ããŠã詳述ããŸãããã®æ ã®çµããã«ã¯ãããªãã®ãŠã§ããããžã§ã¯ããæ°ããªé«ã¿ãžãšåŒãäžãããé åçã§æµåçããã€è€éãªã¢ãã¡ãŒã·ã§ã³ãäœæããããã®ç¥èãšããŒã«ã身ã«ã€ããŠããããšã§ãããã
CSSã¢ãŒã·ã§ã³ãã¹ã®åºæ¬ããããã£
CSSã¢ãŒã·ã§ã³ãã¹ã®æ žå¿ã¯ãã¢ãã¡ãŒã·ã§ã³ã®ãã©ãã€ã ãèŠçŽ ã®x/y座æšãæäœããããšããããããããå®çŸ©ããããã¹ã«æ²¿ã£ãŠé 眮ããããšãžãšã·ãããããç¹ã«ãããŸããäžéäœçœ®ãæåã§èšç®ãã代ããã«ããã¹ãå®çŸ©ããã ãã§ããã©ãŠã¶ããã®è»éã«æ²¿ã£ãè€éãªé 眮ãåŠçããŠãããŸãããã®ã¢ãžã¥ãŒã«åŒã¢ãããŒãã¯ãæç¢ºã«å®çŸ©ãããäžé£ã®CSSããããã£ã«ãã£ãŠæ¯ããããŠããŸãã
offset-path
: ã¢ãã¡ãŒã·ã§ã³è»éã®å®çŸ©
offset-path
ããããã£ã¯ãCSSã¢ãŒã·ã§ã³ãã¹ã®ç€ã§ããããã¯ãèŠçŽ ããã©ã幟äœåŠçãªãã¹ãå®çŸ©ããŸããããªãã®èŠçŽ ãæ»èµ°ããèŠããªãã¬ãŒã«ã ãšèããŠãã ãããå®çŸ©ãããoffset-path
ããªããã°ãèŠçŽ ãæšªæããããã®è»éã¯ååšããŸããã
- æ§æ:
none | <path()> | <url()> | <basic-shape>
none
: ãããããã©ã«ãå€ã§ããnone
ã«èšå®ãããŠããå Žåãã¢ãŒã·ã§ã³ãã¹ã¯å®çŸ©ããããèŠçŽ ã¯ãã®ã¢ãžã¥ãŒã«ã«ãã£ãŠæå®ãããç¹å®ã®è»éããã©ããŸããã<path()>
: ããã¯ããããæã匷åã§æè»ãªãªãã·ã§ã³ã§ããSVGãã¹ããŒã¿ã䜿çšããŠã«ã¹ã¿ã ãã¹ãå®çŸ©ããããšãã§ããŸããããã«ãããæ³åãããã»ãŒãã¹ãŠã®è€éãªåœ¢ç¶ãæ²ç·ããŸãã¯è»éãäœæããããšãå¯èœã«ãªããŸããSVGãã¹ããŒã¿ã«ã€ããŠã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§è©³ãã説æããŸãããçŸæç¹ã§ã¯ããã®é¢æ°ãSVGãã¹ã³ãã³ãã®æååïŒäŸïŒpath('M 0 0 L 100 100 Q 150 50, 200 100 Z')
ïŒãåãããšãçè§£ããŠãã ãããpath()
å ã®åº§æšã¯ãã¢ãã¡ãŒã·ã§ã³ãããèŠçŽ ã®å å«ãããã¯ãåºæºãšããŸãã<url()>
: ãã®ãªãã·ã§ã³ã䜿çšãããšãHTMLå ã®ã€ã³ã©ã€ã³SVGãŸãã¯å€éšSVGãã¡ã€ã«ãªã©ãä»ã®å Žæã§å®çŸ©ãããSVG<path>
èŠçŽ ãåç §ã§ããŸããäŸãã°ãurl(#myCustomPath)
ã¯id="myCustomPath"
ãæã€ãã¹èŠçŽ ãåç §ããŸããããã¯ãè€æ°ã®èŠçŽ ãããŒãžã§è€éãªãã¹ãåå©çšãããããã¹ããŒã¿ãSVGã¢ã»ããã§å¥é管çãããŠããå Žåã«ç¹ã«äŸ¿å©ã§ãã<basic-shape>
: ããåçŽã§äžè¬çãªå¹ŸäœåŠçè»éã«ã¯ãæšæºã®CSSåºæ¬åœ¢ç¶é¢æ°ã䜿çšã§ããŸãããããã¯çŽæçã§ãSVGãã¹ããŒã¿ãããæåã§ã®åº§æšå®çŸ©ãå°ãªããŠæžã¿ãŸããcircle(<radius> at <position>)
: å圢ã®ãã¹ãå®çŸ©ããŸããååŸãšäžå¿ç¹ãæå®ããŸããäŸãã°ãcircle(50% at 50% 50%)
ã¯èŠçŽ ã®å å«ãããã¯ãåããåãäœæããŸããellipse(<radius-x> <radius-y> at <position>)
: åã«äŒŒãŠããŸãããX軞ãšY軞ã«ç¬ç«ããååŸãèšå®ã§ããæ¥å圢ã®ãã¹ãäœæããŸããäŸïŒellipse(40% 60% at 50% 50%)
ãpolygon(<point1>, <point2>, ...)
: é ç¹ããªã¹ãã¢ããããŠå€è§åœ¢ã®ãã¹ãå®çŸ©ããŸãïŒäŸïŒæ£æ¹åœ¢ã®å Žåã¯polygon(0 0, 100% 0, 100% 100%, 0 100%)
ïŒãããã¯äžè§åœ¢ãé·æ¹åœ¢ããŸãã¯äžèŠåãªå€è§åœ¢ã®ãã¹ã«æé©ã§ããinset(<top> <right> <bottom> <left> round <border-radius>)
: é·æ¹åœ¢ã®ãã¹ãå®çŸ©ãããªãã·ã§ã³ã§è§ãäžžããããšãã§ããŸããããã¯clip-path
ããããã£ã®inset()
ãšåæ§ã«æ©èœããŸããäŸïŒinset(10% 20% 10% 20% round 15px)
ã
- åæå€:
none
offset-distance
: ãã¹äžã®é
眮
offset-path
ãå®çŸ©ããããšãoffset-distance
ããããã£ã¯ãã®ãã¹ã«æ²¿ã£ãŠèŠçŽ ãã©ãã ãé²ãã äœçœ®ã«é
眮ãããã¹ãããæå®ããŸããããã¯ãèŠçŽ ãå®çŸ©ãããè»éã«æ²¿ã£ãŠåããããã«ã¢ãã¡ãŒã·ã§ã³ãããäž»èŠãªããããã£ã§ãã
- æ§æ:
<length-percentage>
- åäœ: å€ã¯ããŒã»ã³ããŒãžïŒäŸïŒ
0%
,50%
,100%
ïŒãŸãã¯çµ¶å¯Ÿé·ïŒäŸïŒ0px
,200px
,5em
ïŒã§è¡šçŸã§ããŸãã - ããŒã»ã³ããŒãžå€: ããŒã»ã³ããŒãžã䜿çšããå Žåãå€ã¯
offset-path
ã®èšç®ãããå šé·ã«å¯Ÿããçžå¯Ÿå€ãšãªããŸããäŸãã°ã50%
ã¯ãã¹ã®çµ¶å¯Ÿçãªé·ãã«é¢ä¿ãªããèŠçŽ ããã¹ã®äžéç¹ã«æ£ç¢ºã«é 眮ããŸãããã¹èªäœãã¹ã±ãŒã«ãããšã¢ãã¡ãŒã·ã§ã³ãèªç¶ã«ã¹ã±ãŒã«ãããããã¬ã¹ãã³ã·ããã¶ã€ã³ã«åŒ·ãæšå¥šãããŸãã - 絶察é·ã®å€: 絶察é·ã¯ããã¹ã®éå§ç¹ããç¹å®ã®ãã¯ã»ã«ïŒãŸãã¯ä»ã®é·ãã®åäœïŒè·é¢ã«èŠçŽ ãé 眮ããŸããæ£ç¢ºã§ã¯ãããŸãããJavaScriptã§åçã«ç®¡çããªãéããã¬ã¹ãã³ã·ãã¬ã€ã¢ãŠãã«ã¯æè»æ§ãå£ããŸãã
- ã¢ãã¡ãŒã·ã§ã³ã®é§åå: ãã®ããããã£ã¯ã¢ãã¡ãŒã·ã§ã³ãããããã«èšèšãããŠããŸãã
offset-distance
ã0%
ãã100%
ïŒãŸãã¯ä»»æã®ç¯å²ïŒã«ãã©ã³ãžã·ã§ã³ãŸãã¯ã¢ãã¡ãŒã·ã§ã³ãããããšã§ããã¹ã«æ²¿ã£ãŠåããŠãããã®ãããªé¯èŠãäœãåºããŸãã - åæå€:
0%
offset-rotate
: ãã¹ã«æ²¿ã£ãèŠçŽ ã®åã
èŠçŽ ãæ²ç·ãã¹ã«æ²¿ã£ãŠåããšããããèªç¶ã§ãªã¢ã«ãªåããäœãåºãããã«ãèŠçŽ ããã¹ã®æ¹åã«åãããŠå転ããæŽåããããããšããããããŸããoffset-rotate
ããããã£ããã®åããåŠçããŸãã
- æ§æ:
auto | reverse | <angle> | auto <angle> | reverse <angle>
auto
: ãããæãäžè¬çã§ããã°ãã°æãŸããå€ã§ããèŠçŽ ã®Y軞ïŒãŸãã¯ãã¹ã®æ³ç·ïŒããçŸåšã®ç¹ã«ããããã¹ã®æ¹åã«åãããŠèªåçã«å転ãããŸããæ²ããããã£ãéãèµ°ãè»ãæ³åããŠã¿ãŠãã ããããã®åé¢ã¯åžžã«é²è¡æ¹åãåããŠããŸãããããauto
ãå®çŸããããšã§ããreverse
:auto
ã«äŒŒãŠããŸãããèŠçŽ ã®Y軞ããã¹ã®æ¹åãã180床å転ããŸãããªããžã§ã¯ããè»éã«æ²¿ã£ãŠåŸãåãã«é²ããããªå¹æã«äŸ¿å©ã§ãã<angle>
: ãã¹ã®æ¹åã«é¢ä¿ãªãèŠçŽ ã«é©çšãããåºå®ã®å転ã§ããäŸãã°ãoffset-rotate: 90deg;
ã¯ããã¹ã«æ²¿ã£ãåãã«é¢ä¿ãªããåžžã«èŠçŽ ãããã©ã«ãã®åããã90床å転ãããŸããããã¯ãç§»åäžã«åºå®ã®åããç¶æãã¹ãèŠçŽ ã«äŸ¿å©ã§ããauto <angle>
/reverse <angle>
: ãããã®å€ã¯ãauto
ãŸãã¯reverse
ã®èªåå転ãšã远å ã®åºå®ãªãã»ããå転ãçµã¿åãããŸããäŸãã°ãauto 45deg
ã¯èŠçŽ ããã¹ã®æ¹åã«åãããããã«45床ã®å転ã远å ããŸããããã«ããããã¹ãšã®èªç¶ãªæŽåãç¶æãã€ã€ãèŠçŽ ã®åãã埮調æŽã§ããŸãã- åæå€:
auto
offset-anchor
: ãã¹äžã®èŠçŽ ã®åç¹ã®ç¹å®
ããã©ã«ãã§ã¯ãèŠçŽ ãoffset-path
ã«æ²¿ã£ãŠç§»åããéããã®äžå¿ïŒtransform-origin: 50% 50%
ã«çžåœïŒããã¹ã«åºå®ãããŸããoffset-anchor
ããããã£ã䜿çšãããšããã®ã¢ã³ã«ãŒãã€ã³ãã倿ŽããèŠçŽ ã®ã©ã®éšåãæ£ç¢ºã«ãã¹ããã©ãã¹ãããæå®ã§ããŸãã
- æ§æ:
auto | <position>
auto
: ãããããã©ã«ãã§ããèŠçŽ ã®äžå¿ç¹ïŒ50% 50%ïŒããoffset-path
ã«æ²¿ã£ãŠç§»åããã¢ã³ã«ãŒãã€ã³ããšããŠäœ¿çšãããŸãã<position>
: æšæºã®CSSäœçœ®ã®å€ïŒäŸïŒtop left
,20% 80%
,50px 100px
ïŒã䜿çšããŠã«ã¹ã¿ã ã¢ã³ã«ãŒãã€ã³ããæå®ã§ããŸããäŸãã°ãoffset-anchor: 0% 0%;
ãšèšå®ãããšãèŠçŽ ã®å·Šäžé ããã¹ããã©ãããã«ãªããŸããããã¯ãèŠçŽ ãé察称ã§ããå Žåããç¹å®ã®èŠèŠçãªç¹ïŒäŸïŒç¢å°ã®å 端ããã£ã©ã¯ã¿ãŒã®è¶³å ïŒãæ£ç¢ºã«ãã¹ããªããå¿ èŠãããå Žåã«éèŠã§ãã- å転ãžã®åœ±é¿:
offset-anchor
ã¯ãtransform-origin
ãtransform: rotate()
ã«åœ±é¿ãäžããã®ãšåæ§ã«ãoffset-rotate
ã䜿çšãããå Žåã«èŠçŽ ãå転ããäžå¿ç¹ã«ã圱é¿ããŸãã - åæå€:
auto
path()
ã«ããè€éãªã¢ãã¡ãŒã·ã§ã³ãã¹ã®å®çŸ©
åãæ¥åãå€è§åœ¢ã«ã¯åºæ¬åœ¢ç¶ã䟿å©ã§ãããè€éãªè»éã«å¯ŸããCSSã¢ãŒã·ã§ã³ãã¹ã®çã®åã¯ãSVGãã¹ããŒã¿ãå©çšããpath()
颿°ããçãŸããŸããSVGïŒScalable Vector GraphicsïŒã¯ããã¯ã¿ãŒåœ¢ç¶ãèšè¿°ããããã®å
ç¢ã§æ£ç¢ºãªèšèªãæäŸãããã®ãã¹ã³ãã³ããæŽ»çšããããšã§ãæ³åãããã»ãŒãã¹ãŠã®æ²ç·ãç·åãå®çŸ©ã§ããŸãã
SVGãã¹ã³ãã³ããçè§£ããããšã¯ãè€éãªã¢ãŒã·ã§ã³ãã¹ãç¿åŸããããã®åºæ¬ã§ãããããã®ã³ãã³ãã¯ç°¡æœãªããèšèªã§ãããåäžã®æåïŒçµ¶å¯Ÿåº§æšã®å Žåã¯å€§æåãçžå¯Ÿåº§æšã®å Žåã¯å°æåïŒã«1ã€ä»¥äžã®åº§æšãã¢ãŸãã¯å€ãç¶ããŸãããã¹ãŠã®åº§æšã¯SVGã®åº§æšç³»ïŒéåžžãå·Šäžã0,0ãæ£ã®Xã¯å³ãæ£ã®Yã¯äžïŒãåºæºãšããŸãã
äž»èŠãªSVGãã¹ã³ãã³ãã®çè§£:
以äžã¯ãè€éãªãã¹ãå®çŸ©ããããã«ãã䜿çšãããã³ãã³ãã§ãã
M
ãŸãã¯m
(Moveto):- æ§æ:
M x y
ãŸãã¯m dx dy
M
ã³ãã³ãã¯ç·ãæããã«ããã³ããæ°ããç¹ã«ç§»åããŸããããã¯ã»ãŒåžžã«ãã¹ã®æåã®ã³ãã³ãã§ãããéå§ç¹ã確ç«ããŸãã- äŸ:
M 10 20
(絶察äœçœ®X=10, Y=20ã«ç§»å)ãm 5 10
(çŸåšå°ããå³ã«5ãŠããããäžã«10ãŠãããç§»å)ã
- æ§æ:
L
ãŸãã¯l
(Lineto):- æ§æ:
L x y
ãŸãã¯l dx dy
- çŸåšå°ããæå®ãããæ°ããç¹(x, y)ãŸã§çŽç·ãæããŸãã
- äŸ:
L 100 50
(絶察äœçœ®X=100, Y=50ãŸã§ç·ãæã)ã
- æ§æ:
H
ãŸãã¯h
(Horizontal Lineto):- æ§æ:
H x
ãŸãã¯h dx
- çŸåšå°ããæå®ãããX座æšãŸã§æ°Žå¹³ç·ãæããŸãã
- äŸ:
H 200
(X=200ãŸã§æ°Žå¹³ç·ãæã)ã
- æ§æ:
V
ãŸãã¯v
(Vertical Lineto):- æ§æ:
V y
ãŸãã¯v dy
- çŸåšå°ããæå®ãããY座æšãŸã§åçŽç·ãæããŸãã
- äŸ:
V 150
(Y=150ãŸã§åçŽç·ãæã)ã
- æ§æ:
C
ãŸãã¯c
(Cubic Bézier Curve):- æ§æ:
C x1 y1, x2 y2, x y
ãŸãã¯c dx1 dy1, dx2 dy2, dx dy
- ããã¯æ»ããã§è€éãªæ²ç·ãæãããã®æã匷åãªã³ãã³ãã®1ã€ã§ãã2ã€ã®å¶åŸ¡ç¹(
x1 y1
ãšx2 y2
)ãšçµç¹(x y
)ã®3ç¹ãå¿ èŠã§ããæ²ç·ã¯çŸåšå°ããå§ãŸããx1 y1
ã«åãã£ãŠæ²ãããæ¬¡ã«x2 y2
ã«åãã£ãŠæ²ãããæçµçã«x y
ã§çµãããŸãã - äŸ:
C 50 0, 150 100, 200 50
(çŸåšå°ããå§ãŸããå¶åŸ¡ç¹1ã50,0ãå¶åŸ¡ç¹2ã150,100ãçµç¹ã200,50)ã
- æ§æ:
S
ãŸãã¯s
(Smooth Cubic Bézier Curve):- æ§æ:
S x2 y2, x y
ãŸãã¯s dx2 dy2, dx dy
- äžé£ã®æ»ãããªæ²ç·ãæãŸããå Žåã«äœ¿çšãããã3次ããžã§æ²ç·ã®ã·ã§ãŒãã«ããã§ããæåã®å¶åŸ¡ç¹ã¯ãåã®
C
ãŸãã¯S
ã³ãã³ãã®2çªç®ã®å¶åŸ¡ç¹ã®åå°ã§ãããšæ³å®ãããé£ç¶çã§æ»ãããªé·ç§»ãä¿èšŒããŸãã2çªç®ã®å¶åŸ¡ç¹ãšçµç¹ã®ã¿ãæå®ããŸãã - äŸ:
C
ã³ãã³ãã«ç¶ããŠS 300 0, 400 50
ãšãããšãåã®æ²ç·ã®åå°ãããå¶åŸ¡ç¹ã䜿çšããŠæ»ãããªæ²ç·ãäœæãããŸãã
- æ§æ:
Q
ãŸãã¯q
(Quadratic Bézier Curve):- æ§æ:
Q x1 y1, x y
ãŸãã¯q dx1 dy1, dx dy
- 3次æ²ç·ãããåçŽã§ã1ã€ã®å¶åŸ¡ç¹(
x1 y1
)ãšçµç¹(x y
)ãå¿ èŠãšããŸããæ²ç·ã¯çŸåšå°ããå§ãŸããåäžã®å¶åŸ¡ç¹ã«åãã£ãŠæ²ãããx y
ã§çµãããŸãã - äŸ:
Q 75 0, 100 50
(çŸåšå°ããå§ãŸããå¶åŸ¡ç¹ã75,0ãçµç¹ã100,50)ã
- æ§æ:
T
ãŸãã¯t
(Smooth Quadratic Bézier Curve):- æ§æ:
T x y
ãŸãã¯t dx dy
- 3次æ²ç·ã«ããã
S
ãšåæ§ã®ã2次ããžã§æ²ç·ã®ã·ã§ãŒãã«ããã§ããå¶åŸ¡ç¹ã¯ãåã®Q
ãŸãã¯T
ã³ãã³ãã®å¶åŸ¡ç¹ã®åå°ã§ãããšæ³å®ãããŸããçµç¹ã®ã¿ãæå®ããŸãã - äŸ:
Q
ã³ãã³ãã«ç¶ããŠT 200 50
ãšãããšã200,50ãŸã§ã®æ»ãããªæ²ç·ãäœæãããŸãã
- æ§æ:
A
ãŸãã¯a
(Elliptical Arc Curve):- æ§æ:
A rx ry x-axis-rotation large-arc-flag sweep-flag x y
ãŸãã¯a rx ry x-axis-rotation large-arc-flag sweep-flag dx dy
- ãã®ã³ãã³ãã¯æ¥åã®å匧ãæããŸããåãæ¥åã®äžéšãæãã®ã«éåžžã«å€çšéã§ãã
rx, ry
: æ¥åã®ååŸãx-axis-rotation
: X軞ã«å¯Ÿããæ¥åã®å転ãlarge-arc-flag
: ããŒã«ãã©ã°(0
ãŸãã¯1
)ã1
ã®å Žåãå匧ã¯2ã€ã®å¯èœãªã¹ã€ãŒãã®ãã¡å€§ããæ¹ãåããŸãã0
ã®å Žåã¯å°ããæ¹ãåããŸããsweep-flag
: ããŒã«ãã©ã°(0
ãŸãã¯1
)ã1
ã®å ŽåãååŒ§ã¯æ£ã®è§åºŠæ¹åïŒæèšåãïŒã«æãããŸãã0
ã®å Žåã¯è² ã®è§åºŠæ¹åïŒåæèšåãïŒã«æãããŸããx, y
: å匧ã®çµç¹ã- äŸ:
A 50 50 0 0 1 100 0
(çŸåšå°ããååŸ50,50ãX軞å転ãªããå°ããå匧ãæèšåãã§çµç¹100,0ãŸã§ã®å匧ãæã)ã
- æ§æ:
Z
ãŸãã¯z
(Closepath):- æ§æ:
Z
ãŸãã¯z
- çŸåšå°ããçŸåšã®ãµããã¹ã®æåã®ç¹ãŸã§çŽç·ãåŒãã广çã«åœ¢ç¶ãéããŸãã
- äŸ:
Z
(ãã¹ãéãã)ã
- æ§æ:
ãã¹å®çŸ©ã®äŸ
èããæµ·ã®äžã®ããŒãããã€ãããã¯ãªãšãã«ã®ãŒã®æ³¢ã®ãããªãè€éã§æ³¢æã€åããã·ãã¥ã¬ãŒããããã¹ã®æŠå¿µçãªäŸã瀺ããŸãããã
.wavy-element { offset-path: path('M 0 50 Q 50 0, 100 50 T 200 50 Q 250 100, 300 50 T 400 50'); }
ãã®äŸã§ã¯:
M 0 50
: ãã¹ã¯åº§æš (0, 50) ããå§ãŸããŸãã
Q 50 0, 100 50
: (100, 50) ãŸã§ã®2次ããžã§æ²ç·ãã(50, 0) ãåäžã®å¶åŸ¡ç¹ãšããŠæããæåã®äžåãã®æ²ç·ãäœæããŸãã
T 200 50
: (200, 50) ãŸã§ã®æ»ãããª2次æ²ç·ãæããŸããT
ã³ãã³ããªã®ã§ããã®å¶åŸ¡ç¹ã¯åã®Q
ã³ãã³ãã®å¶åŸ¡ç¹ããæŽŸçããé£ç¶çãªæ³¢ã®ãã¿ãŒã³ãäœæããŸãã
Q 250 100, 300 50
: å¥ã®2次æ²ç·ã§ãä»åã¯äžåãã«æ²ãããŸãã
T 400 50
: ããã«å¥ã®æ»ãããª2次æ²ç·ã§ãæ³¢ãå»¶é·ããŸãããã®ãã¹ã¯ãèŠçŽ ãæ°Žå¹³ã«ç§»åãããªããåçŽã«æ¯åãããŸãã
SVGãã¹ãçæããããã®ããŒã«
ãã¹ã³ãã³ããçè§£ããããšã¯éèŠã§ãããè€éãªSVGãã¹ããŒã¿ãæåã§æžãã®ã¯éªšãæãããšã©ãŒãçºçããããäœæ¥ã§ãã幞ããªããšã«ãããªããå©ããå€ãã®ããŒã«ããããŸãã
- ãã¯ã¿ãŒã°ã©ãã£ãã¯ãšãã£ã¿: Adobe IllustratorãAffinity DesignerããŸãã¯ãªãŒãã³ãœãŒã¹ã®Inkscapeã®ãããªãããã§ãã·ã§ãã«ãªãã¶ã€ã³ãœãããŠã§ã¢ã䜿çšãããšãä»»æã®åœ¢ç¶ãèŠèŠçã«æãããããSVGãã¡ã€ã«ãšããŠãšã¯ã¹ããŒãã§ããŸãããã®åŸãSVGãã¡ã€ã«ãããã¹ããšãã£ã¿ã§éãã
<path>
èŠçŽ ã®d
屿§ã®å€ãã³ããŒã§ããŸããããã«ã¯ãã¹ããŒã¿ãå«ãŸããŠããŸãã - ãªã³ã©ã€ã³SVGãã¹ãšãã£ã¿/ãžã§ãã¬ãŒã¿: SVGatorãæ§ã ãªãªã³ã©ã€ã³CodePenã®äŸã®ãããªãŠã§ããµã€ãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ã圢ç¶ãæããããããžã§æ²ç·ãæäœããããçæãããSVGãã¹ããŒã¿ãå³åº§ã«ç¢ºèªã§ããã€ã³ã¿ã©ã¯ãã£ããªã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãããããã¯è¿ éãªãããã¿ã€ãã³ã°ãåŠç¿ã«æé©ã§ãã
- ãã©ãŠã¶éçºè ããŒã«: ãã©ãŠã¶ã®éçºè ããŒã«ã§SVGèŠçŽ ãæ€æ»ãããšããã¹ããŒã¿ãçŽæ¥èŠãããå Žåã«ãã£ãŠã¯å€æŽãããããããšãã§ããŸããããã¯ãããã°ã埮調æŽã«åœ¹ç«ã¡ãŸãã
- JavaScriptã©ã€ãã©ãª: GreenSock (GSAP) ã®ãããªã©ã€ãã©ãªã¯ãå ç¢ãªSVGããã³ã¢ãŒã·ã§ã³ãã¹æ©èœãåããŠãããããã°ã©ã ã«ãããã¹ã®äœæãæäœãå¯èœã«ããããšããããããŸãã
CSSã¢ãŒã·ã§ã³ãã¹ã«ããã¢ãã¡ãŒã·ã§ã³
offset-path
ã䜿çšããŠç®çã®ã¢ãŒã·ã§ã³ãã¹ãå®çŸ©ããããæ¬¡ã®ã¹ãããã¯èŠçŽ ãããã«æ²¿ã£ãŠåããããšã§ããããã¯äž»ã«offset-distance
ããããã£ãã¢ãã¡ãŒã·ã§ã³ãããããšã«ãã£ãŠéæãããŸããéåžžãCSSã®@keyframes
ãtransition
ã䜿çšããããããåçãªå¶åŸ¡ã®ããã«JavaScriptã䜿çšããŸãã
@keyframes
ã«ããã¢ãã¡ãŒã·ã§ã³
ã»ãšãã©ã®è€éã§é£ç¶çãªã¢ãã¡ãŒã·ã§ã³ã«ã¯ã@keyframes
ãæé©ãªæ¹æ³ã§ããã¢ãã¡ãŒã·ã§ã³ã®é²è¡ãæç¶æéãã¿ã€ãã³ã°ãååŸ©ãæ£ç¢ºã«å¶åŸ¡ã§ããŸãã
@keyframes
ã䜿çšããŠèŠçŽ ããã¹ã«æ²¿ã£ãŠã¢ãã¡ãŒã·ã§ã³ãããã«ã¯ãoffset-distance
ããããã£ã®æ§ã
ãªç¶æ
ïŒããŒãã¬ãŒã ïŒãå®çŸ©ããŸããéåžžã¯0%
ïŒãã¹ã®éå§ïŒãã100%
ïŒãã¹ã®çµäºïŒãŸã§ã§ãã
.animated-object { position: relative; /* ãŸã㯠absolute, fixedãoffset-pathã®äœçœ®æå®ã«å¿ èŠ */ offset-path: path('M 0 0 C 50 100, 150 0, 200 100'); /* æ³¢ç¶ã®ãã¹ */ offset-rotate: auto; /* èŠçŽ ã¯ãã¹ã«æ²¿ã£ãŠå転 */ animation: travelAlongPath 6s linear infinite alternate; width: 50px; height: 50px; background-color: steelblue; border-radius: 50%; } @keyframes travelAlongPath { 0% { offset-distance: 0%; } 100% { offset-distance: 100%; } }
ãã®äŸã§ã¯:
.animated-object
ã¯é
眮ãããŠããŸãïŒoffset-path
ã广çã«é©çšããã«ã¯position: relative
, absolute
, ãŸã㯠fixed
ãå¿
èŠã§ãïŒãoffset-path
ã¯3次ããžã§æ²ç·ãšããŠå®çŸ©ãããŠããŸãã
offset-rotate: auto;
ã¯ãå圢ã®ãªããžã§ã¯ããæ²ç·ã«æ²¿ã£ãŠé²è¡æ¹åãåãããã«èªç¶ã«å転ããããšãä¿èšŒããŸãã
animation
ã·ã§ãŒããã³ãããããã£ã¯travelAlongPath
ããŒãã¬ãŒã ã¢ãã¡ãŒã·ã§ã³ãé©çšããŸã:
6s
: ã¢ãã¡ãŒã·ã§ã³ã®æç¶æéã¯6ç§ã§ããlinear
: èŠçŽ ã¯ãã¹ã«æ²¿ã£ãŠäžå®ã®é床ã§ç§»åããŸããå éãæžéã®ããã«ã¯ease-in-out
ã®ãããªä»ã®ã¿ã€ãã³ã°é¢æ°ããããç¹çްãªããŒã¹é åã®ããã«ã«ã¹ã¿ãcubic-bezier()
颿°ã䜿çšã§ããŸããinfinite
: ã¢ãã¡ãŒã·ã§ã³ã¯ç¡æéã«ç¹°ãè¿ãããŸããalternate
: ã¢ãã¡ãŒã·ã§ã³ã¯å埩ãå®äºãããã³ã«æ¹åãéã«ããŸãïŒã€ãŸãã0%ãã100%ãžããããŠ100%ãã0%ãžæ»ãïŒãããã«ããããã¹ã«æ²¿ã£ãæ»ãããªåŸåŸ©éåãçãŸããŸãã
@keyframes travelAlongPath
ãããã¯ã¯ãã¢ãã¡ãŒã·ã§ã³ã®0%
ã§offset-distance
ã0%
ïŒãã¹ã®éå§ïŒã100%
ã§100%
ïŒãã¹ã®çµäºïŒã§ããããšãæå®ããŸãã
transition
ã«ããã¢ãã¡ãŒã·ã§ã³
@keyframes
ãé£ç¶ã«ãŒãçšã§ããã®ã«å¯Ÿããtransition
ã¯äžåºŠããã®ç¶æ
ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã«çæ³çã§ããã°ãã°ãŠãŒã¶ãŒã®ã€ã³ã¿ã©ã¯ã·ã§ã³ïŒäŸïŒãããŒãã¯ãªãã¯ïŒãã³ã³ããŒãã³ãã®ç¶æ
å€åïŒäŸïŒJavaScriptã§ã¯ã©ã¹ã远å ïŒã«ãã£ãŠããªã¬ãŒãããŸãã
.interactive-icon { position: relative; offset-path: circle(30px at 0 0); /* åç¹ã®åšãã®å°ããªå */ offset-distance: 0%; offset-rotate: auto 45deg; /* ããããªå転ã§éå§ */ transition: offset-distance 0.8s ease-out, offset-rotate 0.8s ease-out; width: 24px; height: 24px; background-color: gold; border-radius: 50%; cursor: pointer; } .interactive-icon:hover { offset-distance: 100%; offset-rotate: auto 225deg; /* ãããŒã§ããã«å転 */ }
ãã®äŸã§ã¯ããŠãŒã¶ãŒã.interactive-icon
ã«ãããŒãããšããã®offset-distance
ã0%
ãã100%
ã«é·ç§»ããåç¹ã®åšããäžåšããŸããåæã«ãoffset-rotate
ããããã£ãé·ç§»ããç§»åäžã«è¿œå ã®ã¹ãã³ãäžããŸããããã«ãããæ¥œããå°ããªã€ã³ã¿ã©ã¯ãã£ããªæŒåºãçãŸããŸãã
ä»ã®CSS Transformãšã®çµã¿åãã
CSSã¢ãŒã·ã§ã³ãã¹ã®éèŠãªå©ç¹ã¯ãæšæºã®CSS transform
ããããã£ããç¬ç«ããŠåäœããããšã§ããããã¯ãè€éãªã¢ãŒã·ã§ã³ãã¹ã¢ãã¡ãŒã·ã§ã³ããèŠçŽ èªäœã«é©çšãããã¹ã±ãŒãªã³ã°ãã¹ãã¥ãŒããŸãã¯è¿œå ã®å転ãšçµã¿åãããããšãã§ããããšãæå³ããŸãã
offset-path
ã¯ãèŠçŽ ããã¹ã«æ²¿ã£ãŠé
眮ããããã«ç¬èªã®å€æè¡åã广çã«äœæããŸããèŠçŽ ã«é©çšãããä»»æã®transform
ããããã£ïŒtransform: scale()
, rotate()
, translate()
ãªã©ïŒã¯ããã®ãã¹ããŒã¹ã®é
眮ã®*äžã«*é©çšãããŸãããã®ã¬ã€ã€ãŒåã¯éåžžã«é«ãæè»æ§ãæäŸããŸãã
.product-spinner { position: absolute; offset-path: ellipse(100px 50px at 50% 50%); offset-distance: 0%; offset-rotate: auto; animation: spinPath 10s linear infinite, scalePulse 2s ease-in-out infinite alternate; width: 80px; height: 80px; background-color: rgba(60, 179, 113, 0.7); /* MediumSeaGreen */ border-radius: 10px; } @keyframes spinPath { 0% { offset-distance: 0%; } 100% { offset-distance: 100%; } } @keyframes scalePulse { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } }
ããã§ã.product-spinner
ã¯spinPath
ã«ãã£ãŠå®çŸ©ãããæ¥åãã¹ã«æ²¿ã£ãŠç§»åããåæã«scalePulse
ã«ãã£ãŠå®çŸ©ãããèåããã¹ã±ãŒã«å¹æãåããŸããã¹ã±ãŒãªã³ã°ã¯ãã¹èªäœãæªãŸããã®ã§ã¯ãªããèŠçŽ ããã¹ã«ãã£ãŠé
眮ããã*åŸ*ã«èŠçŽ ãã¹ã±ãŒãªã³ã°ãããããéå±€çã§æŽç·Žãããã¢ãã¡ãŒã·ã§ã³å¹æãå¯èœã«ãªããŸãã
å®äžçã®ã¢ããªã±ãŒã·ã§ã³ãšã°ããŒãã«ãªãŠãŒã¹ã±ãŒã¹
CSSã¢ãŒã·ã§ã³ãã¹ã¯åãªãçè«çãªæŠå¿µã§ã¯ãããŸãããäžçäžã®å€æ§ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãæ¥çã§ãŠãŒã¶ãŒäœéšãå€§å¹ ã«åäžãããããšãã§ããå®çšçãªããŒã«ã§ããæµåçã§éç·åœ¢ãªåããäœãåºããã®èœåã¯ããã€ãããã¯ãªãŠã§ããã¶ã€ã³ã®æ°ããªå¯èœæ§ã®é åãéããã€ã³ã¿ã©ã¯ã·ã§ã³ãšããžã¥ã¢ã«ã¹ããŒãªãŒããªã³ã°ãåäžãããŸãã
1. ã€ã³ã¿ã©ã¯ãã£ããªããŒã¿å¯èŠåãšã€ã³ãã©ã°ã©ãã£ãã¯
- ãã¬ã³ããšãããŒã®å³è§£: æ ªäŸ¡ãã¢ãã¡ãŒã·ã§ã³åããããããã§è¡šçŸãããåžå Žã®ãã©ãã£ãªãã£ãæé·ãã¿ãŒã³ãæåããã«ã¹ã¿ã ã«ãŒãã«æ²¿ã£ãŠæµããéèããã·ã¥ããŒããæ³åããŠã¿ãŠãã ããããããã¯ãååã衚ãã¢ãã¡ãŒã·ã§ã³åãããç·ã倧éžéã®èŒžéã«ãŒãããã©ããéã«å¿ããŠè²ãå€ããäžç貿æããããªã©ã§ãã
- é¢é£æ å ±ã®æ¥ç¶: è€éãªãããã¯ãŒã¯å³ãçµç¹å³ã§ã¯ãã¢ãŒã·ã§ã³ãã¹ããŠãŒã¶ãŒã®èŠç·ãèŠèŠçã«å°ããé¢é£ããŒãéã®æ¥ç¶ãã¢ãã¡ãŒã·ã§ã³åãããããœãŒã¹ãããã¹ãã£ããŒã·ã§ã³ãžã®ããŒã¿ãããŒã瀺ãããããããšãã§ããŸããäŸãã°ããµãŒããŒç£èŠããã·ã¥ããŒãäžã®å®éã®ãããã¯ãŒã¯ããããžãã¹ã«æ²¿ã£ãŠç§»åããããŒã¿ãã±ãããªã©ã§ãã
- å°ççããŒã¿ã®ã¢ãã¡ãŒã·ã§ã³: äžçå°å³äžã§ããã©ã€ããã¹ã貚ç©ã®èªè·¯ããŸãã¯ã€ãã³ãïŒæ°è±¡åç·ããã¬ã³ããªã©ïŒã®åºããããæ£ç¢ºãªå°ççè»éã«æ²¿ã£ãŠã¢ãã¡ãŒã·ã§ã³åããè€éãªã°ããŒãã«ããŒã¿ãçŽæçã§é åçãªæ¹æ³ã§å¯èŠåããŸãã
2. é åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒ
- ãŠããŒã¯ãªããŒããŒãšã¹ãããŒ: äžè¬çãªå転ããåãè¶ ããŸããããèŠçŽ ããã©ã³ãã®ããŽåœ¢ç¶ãè€éãªå¹Ÿäœåп𡿧ããŸãã¯æµåçã§ææ©çãªè»éã«æ²¿ã£ãŠã¢ãã¡ãŒã·ã§ã³ããç¹æ³šã®ããŒãã£ã³ã°ã€ã³ãžã±ãŒã¿ãŒãäœæããæ¥œãããŠããŒã¯ãªåŸ æ©äœéšãæäŸããŸãã
- ãã€ãããã¯ãªããã²ãŒã·ã§ã³ã¡ãã¥ãŒ: åçŽãªã¹ã©ã€ãã€ã³/ã¢ãŠãã¡ãã¥ãŒã®ä»£ããã«ãã¡ã€ã³ã¡ãã¥ãŒã¢ã€ã³ã³ãã¯ãªãã¯ãŸãã¯ãããŒããããšãã«ã湟æ²ãããã¹ã«æ²¿ã£ãŠæç¶ã«åºããããã²ãŒã·ã§ã³é ç®ããã¶ã€ã³ããŸããåé ç®ã¯ãããã«ç°ãªãå匧ããã©ããã¡ãã¥ãŒãéãããããšå ã®å Žæã«æ»ããŸãã
- 補åã·ã§ãŒã±ãŒã¹ãšã³ã³ãã£ã®ã¥ã¬ãŒã¿: eã³ããŒã¹ã補åã©ã³ãã£ã³ã°ããŒãžã§ã補åã®ããŸããŸãªæ©èœãã³ã³ããŒãã³ãããã¹ã«æ²¿ã£ãŠã¢ãã¡ãŒã·ã§ã³åãããã®æ©èœæ§ããã¶ã€ã³ã匷調ããŸããã¢ã¯ã»ãµãªãŒãäºåã«å®çŸ©ãããæ²ç·ã«æ²¿ã£ãŠã¹ã ãŒãºã«çŸããè»äž¡ã«åãä»ããããã«ãŒã³ã³ãã£ã®ã¥ã¬ãŒã¿ãæ³åããŠã¿ãŠãã ããã
- ãªã³ããŒãã£ã³ã°ãããŒãšãã¥ãŒããªã¢ã«: ã¢ãã¡ãŒã·ã§ã³åãããèŠçŽ ã§æ°èŠãŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³å ã«å°ããã¹ããããèŠèŠçã«ãã©ã£ãããéèŠãªUIã³ã³ããŒãã³ãã匷調ãããããããšã§ããªã³ããŒãã£ã³ã°ããã»ã¹ãããé åçã§æããªããã®ã«ããŸãã
3. ã¹ããŒãªãŒããªã³ã°ãšæ²¡å ¥åãŠã§ãäœéš
- ç©èªäž»å°ã®ãŠã§ããµã€ã: ããžã¿ã«ã¹ããŒãªãŒããªã³ã°ããã£ã³ããŒã³ãµã€ãã§ããã£ã©ã¯ã¿ãŒãããã¹ãèŠçŽ ããç©èªã®æµããèŠèŠçã«è¿œããã¹ã«æ²¿ã£ãŠã¢ãã¡ãŒã·ã§ã³åããŸãããã£ã©ã¯ã¿ãŒãæ²ããããã£ãå°éã«æ²¿ã£ãŠé¢šå æåªãªèæ¯ãæ©ããããéèŠãªãã¬ãŒãºãæ°ãŸãããªè»éãæããŠç»é¢ã暪åã£ããããããšãèããããŸãã
- æè²ã³ã³ãã³ããšã·ãã¥ã¬ãŒã·ã§ã³: è€éãªç§åŠçæŠå¿µãçãçããšãããŸããããææã®è»éãåè·¯å ã®é»åã®æµãããŸãã¯çºå°äœã®è»éããæ£ç¢ºãªã¢ãŒã·ã§ã³ãã¹ã¢ãã¡ãŒã·ã§ã³ã§å³è§£ããŸããããã¯äžçäžã®åŠç¿è ã®çè§£ãå€§å¹ ã«å©ããããšãã§ããŸãã
- ã€ã³ã¿ã©ã¯ãã£ããªã²ãŒã èŠçŽ : ã·ã³ãã«ãªãã©ãŠã¶å ã²ãŒã ã§ã¯ãã¢ãŒã·ã§ã³ãã¹ããã£ã©ã¯ã¿ãŒãçºå°ç©ããŸãã¯åéåã®åããå®çŸ©ã§ããŸãããã£ã©ã¯ã¿ãŒãæŸç©ç·ç¶ã®ååŒ§ã«æ²¿ã£ãŠãžã£ã³ãããããã³ã€ã³ãç¹å®ã®åéãã¹ããã©ã£ããããããšãå¯èœã§ãã
- ãã©ã³ãã¹ããŒãªãŒããªã³ã°ãšã¢ã€ãã³ãã£ãã£: äŒç€Ÿã®äŸ¡å€èŠ³ãæŽå²ããŸãã¯ã€ãããŒã·ã§ã³ã®æ ãåæ ãããã¹ã«æ²¿ã£ãŠããã©ã³ãã®ããŽãäž»èŠãªããžã¥ã¢ã«èŠçŽ ãã¢ãã¡ãŒã·ã§ã³åããŸãããã¯ãããžãŒäŒæ¥ã®ããŽãåè·¯åºæ¿ã®ãã¹ã«æ²¿ã£ãŠãæ ããããããšã§ãã€ãããŒã·ã§ã³ãšæ¥ç¶æ§ã象城ããããšãã§ããŸãã
4. èžè¡çããã³è£ 食çèŠçŽ
- ãã€ãããã¯ãªèæ¯: ç²åãæœè±¡çãªåœ¢ç¶ããŸãã¯è£ 食çãªãã¿ãŒã³ãè€éãªã«ãŒããã¹ããã©ãé æçãªèæ¯ã¢ãã¡ãŒã·ã§ã³ãäœæããã¡ã€ã³ã³ã³ãã³ãããæ°ãæ£ããããšãªããæ·±ã¿ãšèŠèŠçãªé¢çœã¿ãå ããŸãã
- ãã€ã¯ãã€ã³ã¿ã©ã¯ã·ã§ã³ãšãã£ãŒãããã¯: ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«å¯ŸããŠãç¹çŽ°ã§æ¥œãããã£ãŒãããã¯ãæäŸããŸããã¢ã€ãã ãã«ãŒãã«è¿œå ããããšãå°ããªã¢ã€ã³ã³ãçããã¹ã«æ²¿ã£ãŠã«ãŒãã¢ã€ã³ã³ã«ã¢ãã¡ãŒã·ã§ã³ã§å ¥ããŸãããã©ãŒã ãéä¿¡ããããšã確èªã®ãã§ãã¯ããŒã¯ãçŽ æ©ãæºè¶³ã®ããè»éãæããŸãã
ãããã®ãŠãŒã¹ã±ãŒã¹ã®ã°ããŒãã«ãªé©çšå¯èœæ§ã¯èšãç¥ããŸããããã³ãã³ã®æŽç·Žãããéèæ©é¢ãæ±äº¬ã®eã³ããŒã¹å€§æããã€ããã®åŠçã«å±ãæè²ãã©ãããã©ãŒã ããŸãã¯ãµã³ããŠãã®ãŠãŒã¶ãŒã楜ããŸãããšã³ã¿ãŒãã€ã¡ã³ãããŒã¿ã«ããã¶ã€ã³ããŠããå Žåã§ããCSSã¢ãŒã·ã§ã³ãã¹ã¯ãèšèªãæåã®å£ãé åçãªåãã§è¶ ããã€ã³ã¿ã©ã¯ã·ã§ã³ã匷åããæ å ±ã广çã«äŒããããã®æ®éçã«çè§£ãããèŠèŠèšèªãæäŸããŸãã
ã°ããŒãã«ãªãŒãã£ãšã³ã¹ã®ããã®é«åºŠãªãã¯ããã¯ãšèæ ®äºé
CSSã¢ãŒã·ã§ã³ãã¹ã®åºæ¬çãªå®è£ ã¯ç°¡åã§ãããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«å ç¢ã§é«æ§èœããã€ã¢ã¯ã»ã¹ããããã¢ãã¡ãŒã·ã§ã³ãæ§ç¯ããã«ã¯ãããã€ãã®é«åºŠãªèæ ®äºé ã«æ³šæãæãå¿ èŠããããŸãããããã®èŠçŽ ã¯ãããã€ã¹ããã©ãŠã¶ããŸãã¯ãŠãŒã¶ãŒã®å¥œã¿ã«é¢ä¿ãªããã¢ãã¡ãŒã·ã§ã³ãäžè²«ããŠæ¥œãããå æ¬çãªäœéšãæäŸããããšãä¿èšŒããŸãã
1. ã¬ã¹ãã³ã·ãæ§ãšã¹ã±ãŒã©ããªãã£
ãŠã§ããã¶ã€ã³ã¯ãã³ã³ãã¯ããªæºåž¯é»è©±ããåºå€§ãªãã¹ã¯ãããã¢ãã¿ãŒãŸã§ãç¡æ°ã®ç»é¢ãµã€ãºã«ã·ãŒã ã¬ã¹ã«é©å¿ããå¿ èŠããããŸããçæ³çã«ã¯ãã¢ãŒã·ã§ã³ãã¹ãããã«å¿ããŠã¹ã±ãŒã«ããé©å¿ãã¹ãã§ãã
offset-path
座æšã®çžå¯Ÿåäœ:path()
ã䜿çšããŠãã¹ãå®çŸ©ããéã座æšã¯éåžžåäœãªãã§ãèŠçŽ ã®å å«ãããã¯ã®ããŠã³ãã£ã³ã°ããã¯ã¹å ã®ãã¯ã»ã«ãšããŠè§£éãããŸããã¬ã¹ãã³ã·ããªãã¹ã®ããã«ã¯ãSVGãã¹ã±ãŒã«ããããã«èšèšãããŠããããšã確èªããŠãã ãããurl()
ãä»ããŠSVGãåç §ããŠããå Žåã¯ããã®SVGèªäœãã¬ã¹ãã³ã·ãã§ããããšã確èªããŠãã ãããviewBox
屿§ãšwidth="100%"
ãŸãã¯height="100%"
ãæã€SVGã¯ããã®å éšåº§æšç³»ãã³ã³ããã«åãããŠã¹ã±ãŒã«ããŸããã¢ãŒã·ã§ã³ãã¹ã¯èªç¶ã«ãã®ã¹ã±ãŒãªã³ã°ã«åŸããŸããoffset-distance
ã®ããŒã»ã³ããŒãž:offset-distance
ã«ã¯åžžã«ããŒã»ã³ããŒãžïŒ%
ïŒã䜿çšããããšãåªå ããŠãã ããïŒäŸïŒ0%
ãã100%
ïŒãããŒã»ã³ããŒãžã¯æ¬è³ªçã«ã¬ã¹ãã³ã·ãã§ããããã¹ã®å šé·ã«å¯Ÿããå²åã衚ããŸãããã¹ãã¹ã±ãŒã«ãããšãããŒã»ã³ããŒãžããŒã¹ã®è·é¢ã¯èªåçã«èª¿æŽãããæ°ãããã¹ã®é·ãã«å¿ããŠã¢ãã¡ãŒã·ã§ã³ã®ã¿ã€ãã³ã°ãšé²è¡ãç¶æãããŸãã- åçãã¹ã®ããã®JavaScript: éåžžã«è€éãŸãã¯çã«åçãªã¬ã¹ãã³ã·ãæ§ïŒäŸïŒç¹å®ã®ãã¥ãŒããŒããã¬ãŒã¯ãã€ã³ãããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã«åºã¥ããŠãã¹ãå®å
šã«åæç»ãããå ŽåïŒã«ã¯ãJavaScriptãå¿
èŠã«ãªãå ŽåããããŸããJavaScriptã䜿çšããŠç»é¢ãµã€ãºã®å€æŽãæ€åºãã
offset-path
ã®å€ãåçã«æŽæ°ããããSVGãã¹ããŒã¿ãå®å šã«åçæãããããããšãã§ããŸããD3.jsã®ãããªã©ã€ãã©ãªããããŒã¿ããã¥ãŒããŒãã®æ¬¡å ã«åºã¥ããŠããã°ã©ã ã§SVGãã¹ãçæããã®ã«åŒ·åã§ãã
2. ããã©ãŒãã³ã¹ã®æé©å
ã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ã¯ãããžãã£ããªãŠãŒã¶ãŒäœéšã«ãšã£ãŠäžå¯æ¬ ã§ããã«ã¯ã«ã¯ãããéåãããããã¢ãã¡ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒãããã ãããé¢è±ã«ã€ãªããããšãããããŸããCSSã¢ãŒã·ã§ã³ãã¹ã®ã¢ãã¡ãŒã·ã§ã³ã¯äžè¬çã«ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå¹ããŠãããããã¯çŽ æŽãããåºçºç¹ã§ãããæé©åã¯äŸç¶ãšããŠéèŠã§ãã
- ãã¹ã®è€éã:
path()
ã¯éåžžã«è€éãªãã¶ã€ã³ãå¯èœã«ããŸããããã€ã³ããã³ãã³ããå€ãããé床ã«è€éãªãã¹ã¯ãã¬ã³ããªã³ã°äžã®èšç®è² è·ãå¢å ãããå¯èœæ§ããããŸããæãŸããèŠèŠå¹æãéæããæãåçŽãªãã¹ãç®æããŠãã ãããçŽç·ã§ååãªå Žåã¯æ²ç·ãåçŽåããäžèŠãªé ç¹ãæžãããŸãã will-change
ããããã£:will-change
CSSããããã£ã¯ãã©ã®ããããã£ã倿Žããããããã©ãŠã¶ã«ãã³ããšããŠäŒããããšãã§ããŸããã¢ãã¡ãŒã·ã§ã³ããèŠçŽ ã«will-change: offset-path, offset-distance, transform;
ãé©çšãããšããã©ãŠã¶ãäºåã«ã¬ã³ããªã³ã°ãæé©åã§ããå ŽåããããŸãããã ããæ éã«äœ¿çšããŠãã ãããwill-change
ã䜿ãããããšããªãœãŒã¹ãç¯çŽããã©ããããããå€ãã®ãªãœãŒã¹ãæ¶è²»ããããšããããŸãã- ã¢ãã¡ãŒã·ã§ã³åããèŠçŽ ã®å¶é: 倿°ã®èŠçŽ ãåæã«ãç¹ã«è€éãªãã¹ã§ã¢ãã¡ãŒã·ã§ã³ããããšãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã倿°ã®èŠçŽ ããã¹ã«æ²¿ã£ãŠåããå¿ èŠãããå Žåã¯ãã¢ãã¡ãŒã·ã§ã³ããããåŠçããããä»®æ³åã®ãããªãã¯ããã¯ã䜿çšãããããããšãæ€èšããŠãã ããã
- ã¢ãã¡ãŒã·ã§ã³ã¿ã€ãã³ã°é¢æ°: é©åãªã¿ã€ãã³ã°é¢æ°ã䜿çšããŠãã ããã
linear
ã¯äžå®ã®é床ã«é©ããŠããããšãå€ãã§ãã絶察ã«å¿ èŠãªå Žåãé€ããé床ã«è€éãªã«ã¹ã¿ãcubic-bezier()
颿°ã¯é¿ããŠãã ããããããã¯çµã¿èŸŒã¿ã®ãã®ãããCPUè² è·ãé«ããªãããšããããŸãã
3. ãã©ãŠã¶äºææ§ãšãã©ãŒã«ããã¯
çŸä»£ã®ãã©ãŠã¶ïŒChromeãFirefoxãEdgeãSafariãOperaïŒã¯CSSã¢ãŒã·ã§ã³ãã¹ãåªãããµããŒããæäŸããŠããŸãããå€ããã©ãŠã¶ãæŽæ°é »åºŠã®äœãç°å¢ïŒäžéšã®ã°ããŒãã«å°åã§äžè¬çïŒã§ã¯ããã§ãªãå ŽåããããŸããé©åãªãã©ãŒã«ããã¯ãæäŸããããšã§ããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ããäœéšãä¿èšŒããŸãã
@supports
ã«ãŒã«:@supports
CSSã¢ããã«ãŒã«ã¯ãããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãã®ããã®æè¯ã®åã§ãããã©ãŠã¶ãç¹å®ã®CSSæ©èœããµããŒãããŠããå Žåã«ã®ã¿ã¹ã¿ã€ã«ãé©çšã§ããŸãã.element-to-animate { /* offset-pathããµããŒãããªããã©ãŠã¶ã®ããã®ãã©ãŒã«ããã¯ã¹ã¿ã€ã« */ position: absolute; left: 0; top: 0; transition: left 2s ease-in-out, top 2s ease-in-out; /* åºæ¬çãªç·åœ¢ç§»åã®ãã©ãŒã«ãã㯠*/ } @supports (offset-path: path('M 0 0 L 1 1')) { .element-to-animate { /* ãµããŒããããã©ãŠã¶ã®ããã®ã¢ãŒã·ã§ã³ãã¹ã¹ã¿ã€ã« */ offset-path: path('M 0 0 C 50 100, 150 0, 200 100'); offset-distance: 0%; offset-rotate: auto; animation: motionPathAnim 6s linear infinite alternate; /* ãã©ãŒã«ããã¯ã®ãã©ã³ãžã·ã§ã³/äœçœ®ãäžæžããŸãã¯åé€ */ left: unset; /* ãã©ãŒã«ããã¯ã®`left`ãå¹²æžããªãããã«ãã */ top: unset; /* ãã©ãŒã«ããã¯ã®`top`ãå¹²æžããªãããã«ãã */ transform: none; /* ããã©ã«ãã®transformãããã°ã¯ãªã¢ãã */ } } @keyframes motionPathAnim { 0% { offset-distance: 0%; } 100% { offset-distance: 100%; } }
ãã®ã¹ããããã¯ãã¢ãŒã·ã§ã³ãã¹ããµããŒãããªããã©ãŠã¶ã§ãåºæ¬çãªã¢ãã¡ãŒã·ã§ã³ã衚瀺ãããçŸä»£ã®ãã©ãŠã¶ã§ã¯å®å šã§è€éãªè»éãæ¥œãããããšãä¿èšŒããŸãã
- ããªãã£ã«: ãã¹ãŠã®ãã©ãŠã¶ããŒãžã§ã³ã§ããåºç¯ãªãµããŒããèŠæ±ããéèŠãªã¢ããªã±ãŒã·ã§ã³ã«ã¯ãããªãã£ã«ã®äœ¿çšãæ€èšããŠãã ããããã ããããªãã£ã«ã¯ããã©ãŒãã³ã¹ã®ãªãŒããŒããããå°å ¥ããå¯èœæ§ãããããã€ãã£ãã®åäœãå®å šã«åçŸã§ããªãå Žåãããããšã«æ³šæããŠãã ãããæ éã«éžæããå³å¯ã«ãã¹ãããå¿ èŠããããŸãã
- 培åºçã«ãã¹ããã: ã¿ãŒã²ãããšããã°ããŒãã«ãªãŒãã£ãšã³ã¹å ã§äžè¬çãªããŸããŸãªãã©ãŠã¶ãããã€ã¹ãã€ã³ã¿ãŒãããæ¥ç¶é床ã§ã¢ãã¡ãŒã·ã§ã³ãåžžã«ãã¹ãããŠãã ãããBrowserStackãSauce Labsã®ãããªããŒã«ãããã«åœ¹ç«ã¡ãŸãã
4. ã¢ã¯ã»ã·ããªã㣠(A11y)
åãã¯åŒ·åãªã³ãã¥ãã±ãŒã·ã§ã³ããŒã«ã§ãããååºé害ãèªç¥é害ãªã©ãç¹å®ã®é害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠã¯éå£ãšãªãããšããããŸããã¢ã¯ã»ã·ããªãã£ã確ä¿ãããšããããšã¯ããªãã·ã§ã³ãšä»£æ¿ææ®µãæäŸããããšãæå³ããŸãã
prefers-reduced-motion
ã¡ãã£ã¢ã¯ãšãª: ãã®éèŠãªã¡ãã£ã¢ã¯ãšãªã䜿çšãããšããŠãŒã¶ãŒããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®èšå®ã§åããæžããèšå®ã«ããŠãããã©ãããæ€åºã§ããŸããéçãŸãã¯å€§å¹ ã«ç°¡çŽ åãããã¢ãã¡ãŒã·ã§ã³ã®ä»£æ¿æ¡ãæäŸããããšã§ãåžžã«ãã®èšå®ãå°éããŠãã ããã@media (prefers-reduced-motion: reduce) { .element-to-animate { animation: none !important; /* ãã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ãç¡å¹å */ transition: none !important; /* ãã¹ãŠã®ãã©ã³ãžã·ã§ã³ãç¡å¹å */ /* èŠçŽ ãæçµçãŸãã¯æãŸããéçãªç¶æ ã«èšå® */ offset-distance: 100%; /* ãŸãã¯ä»ã®é©åãªéçäœçœ® */ offset-rotate: 0deg; /* å転ããªã»ãã */ transform: none; /* ä»ã®transformããªã»ãã */ } /* 代æ¿ã®éçãªç»åãããã¹ã説æã衚瀺ããå¯èœæ§ */ }
ããã«ãããåãã«ææãªãŠãŒã¶ãŒãå§åãããããæ¹åæèŠã倱ã£ããããããšããªããªããŸãã
- ååºããªã¬ãŒãé¿ãã: ã¹ã ãŒãºã§äºæž¬å¯èœã§ãããæ¥æ¿ã§äºæž¬äžå¯èœãªåããé床ã®ç¹æ» ããŸãã¯ç»é¢ã®å€§éšåãé«éã§ç§»åããèŠçŽ ãé¿ããã¢ãã¡ãŒã·ã§ã³ããã¶ã€ã³ããŠãã ããããããã¯ãæåæ§ã®é«ãå人ã«ä¹ãç©é ããããŸãããŸãã¯çºäœãåŒãèµ·ããå¯èœæ§ããããŸãã
- éèŠãªæ å ±ã«ã¯ä»£æ¿ææ®µãæäŸãã: ã¢ãã¡ãŒã·ã§ã³ãéèŠãªæ å ±ãäŒããŠããå Žåã¯ããã®æ å ±ãéçãªããã¹ããç»åããŸãã¯åãã«äŸåããªãå¥ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãéããŠå©çšå¯èœã§ããããšã確èªããŠãã ããããã¹ãŠã®ãŠãŒã¶ãŒããè€éãªåãã ãã§äŒããããæ å ±ãç¥èŠãŸãã¯åŠçããããã§ã¯ãããŸããã
- ããŒããŒãããã²ãŒã·ã§ã³ãšã¹ã¯ãªãŒã³ãªãŒããŒ: ã¢ãã¡ãŒã·ã§ã³ãæšæºã®ããŒããŒãããã²ãŒã·ã§ã³ãã¹ã¯ãªãŒã³ãªãŒããŒã®æ©èœã劚ããªãããã«ããŠãã ãããã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã¯ãã¢ãã¡ãŒã·ã§ã³ãåçãããŠããéããã©ãŒã«ã¹å¯èœã§æäœå¯èœã§ãªããã°ãªããŸããã
5. åœéå (i18n) ã®èæ ®äºé
CSSã¢ãŒã·ã§ã³ãã¹èªäœã¯èšèªã«äŸåããŸããããããã䜿çšãããæèã¯ããã§ãªããããããŸãããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ãã¶ã€ã³ããéã«ã¯ãæåçãªé¢é£æ§ãèªã¿åãæ¹åãèæ ®ããŠãã ããã
- ã³ã³ãã³ãã®ããŒã«ãªãŒãŒã·ã§ã³: ã¢ãã¡ãŒã·ã§ã³åãããèŠçŽ ã«ããã¹ãïŒäŸïŒã¢ãã¡ãŒã·ã§ã³åãããã©ãã«ããã£ãã·ã§ã³ïŒãå«ãŸããŠããå Žåã¯ããã®ããã¹ããç°ãªãèšèªãã¹ã¯ãªããã«å¯ŸããŠé©åã«ããŒã«ã©ã€ãºãããŠããããšã確èªããŠãã ããã
- æžåæ¹å (RTL/LTR): ã»ãšãã©ã®SVGãã¹ãšCSS座æšç³»ã¯ãå·Šããå³ïŒLTRïŒã®èªã¿åãæ¹åïŒæ£ã®Xã¯å³ïŒãæ³å®ããŠããŸãããã¶ã€ã³ãå³ããå·ŠïŒRTLïŒã®èšèªïŒã¢ã©ãã¢èªãããã©ã€èªãªã©ïŒã«é©å¿ããå¿
èŠãããå Žåã¯ã以äžãå¿
èŠã«ãªãå ŽåããããŸã:
- RTLã¬ã€ã¢ãŠãçšã«ãã©ãŒãªã³ã°ããã代æ¿ã®
offset-path
å®çŸ©ãæäŸããã - RTLã³ã³ããã¹ãã§èŠªèŠçŽ ãŸãã¯SVGã³ã³ããã«CSS
transform: scaleX(-1);
ãé©çšãããããã«ãããã¹ã广çã«ãã©ãŒãªã³ã°ãããŸãããã ããããã¯èŠçŽ ã®ã³ã³ãã³ãããã©ãŒãªã³ã°ããå¯èœæ§ããããæãŸãããªãå ŽåããããŸãã
åãæ³¢ã®ãããªãäžè¬çãªéããã¹ãçãªåãã®å Žåãæžåæ¹åã¯ããã»ã©åé¡ã«ãªããŸããããç©èªã®æµããããã¹ãã®æ¹åã«é¢é£ä»ãããããã¹ã®å Žåã¯éèŠã«ãªããŸãã
- RTLã¬ã€ã¢ãŠãçšã«ãã©ãŒãªã³ã°ããã代æ¿ã®
- åãã®æåçæè: ç¹å®ã®åããèŠèŠçãªæãããããããŸããŸãªæåã§ç°ãªãè§£éããããå¯èœæ§ãããããšã«æ³šæããŠãã ãããè€éãªãã¹ã¢ãã¡ãŒã·ã§ã³ãæ®éçã«è¯å®çãŸãã¯åŠå®çã«è§£éãããããšã¯çšã§ãããã¢ãã¡ãŒã·ã§ã³ãçŽç²ã«è£ 食çãªå Žåã¯ãæåçã«ç¹å®ã®ã€ã¡ãŒãžãã¡ã¿ãã¡ãŒãé¿ããŠãã ããã
广çãªCSSã¢ãŒã·ã§ã³ãã¹å®è£ ã®ããã®ãã¹ããã©ã¯ãã£ã¹
CSSã¢ãŒã·ã§ã³ãã¹ã®åãçã«æŽ»çšããäžçäžã§åè¶ããäœéšãæäŸããããã«ã¯ã以äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
-
æåã«è»éãèŠèŠçã«èšç»ãã: CSSã1è¡æžãåã«ãæãŸããã¢ãŒã·ã§ã³ãã¹ãçŽã«ã¹ã±ããããããçæ³çã«ã¯SVGãšãã£ã¿ã䜿çšããŠãã ããããã¹ãèŠèŠåããããšã¯ãæ£ç¢ºã§ãçŸçã«æºè¶³ã®ãããç®çã®ããåããäœæããã®ã«éåžžã«åœ¹ç«ã¡ãŸããAdobe IllustratorãInkscapeããŸãã¯ãªã³ã©ã€ã³ã®SVGãã¹ãžã§ãã¬ãŒã¿ã®ãããªããŒã«ã¯ããã®äºåèšç®ã«éåžžã«äŸ¡å€ããããŸãã
-
ã·ã³ãã«ããå§ããåŸã ã«ç²Ÿç·»åãã: éåžžã«è€éãªããžã§æ²ç·ã«ææŠããåã«ãåãåçŽãªç·ã®ãããªåºæ¬çãªåœ¢ç¶ããå§ããŠãã ãããåºæ¬çãªããããã£ãš
offset-distance
ãã©ã®ããã«ã¢ãã¡ãŒã·ã§ã³ãé§åãããããã¹ã¿ãŒããŠãã ãããåã¹ãããããã¹ãããªããåŸã ã«è€éããå°å ¥ããæãŸãã广ã確èªããŠãã ããã -
ããã©ãŒãã³ã¹ã®ããã«ãã¹ããŒã¿ãæé©åãã:
path()
ã䜿çšããå Žåãæ²ç·ãæ»ããã«å®çŸ©ããããã«å¿ èŠãªæå°éã®ãã€ã³ããšã³ãã³ããç®æããŠãã ããããã€ã³ããå°ãªãã»ã©ãCSSã®ãã¡ã€ã«ãµã€ãºãå°ãããªãããã©ãŠã¶ã®èšç®ãå°ãªããªããŸããSVGæé©åããŒã«ã¯ãè€éãªãã¹ãåçŽåããã®ã«åœ¹ç«ã¡ãŸãã -
offset-rotate
ãè³¢ãæŽ»çšãã: ãã¹ã®æ¹åã«èªç¶ã«åŸãã¹ãèŠçŽ ïŒä¹ãç©ãç¢å°ããã£ã©ã¯ã¿ãŒãªã©ïŒã«ã¯ãåžžã«offset-rotate: auto;
ã䜿çšããŠãã ãããèŠçŽ ã®åºæã®åãããã¹ã®æ¥ç·ã«å¯ŸããŠèª¿æŽããå¿ èŠãããå Žåã¯ã远å ã®è§åºŠïŒäŸïŒauto 90deg
ïŒãšçµã¿åãããŠãã ããã -
ãŠãŒã¶ãŒäœéšãšç®çãåªå ãã: ãã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ã¯ç®çãæããã¹ãã§ãããŠãŒã¶ãŒã®èŠç·ãå°ããŠããŸããïŒæ å ±ãäŒããŠããŸããïŒã€ã³ã¿ã©ã¯ãã£ããã£ã匷åããŠããŸããïŒãããšãåã«æ¥œãããå ããŠããŸããïŒç¹ã«æ°èåžå Žã®åž¯åå¹ ãéãããŠãããŠãŒã¶ãŒãå€ãããã€ã¹ã䜿çšããŠãããŠãŒã¶ãŒã«ãšã£ãŠãæ°ãæ£ãããããããã ããããã䜿ããããã劚ãããããç¡é§ãªã¢ãã¡ãŒã·ã§ã³ã¯é¿ããŠãã ããã
-
ã¯ãã¹ãã©ãŠã¶äºææ§ãšãã©ãŒã«ããã¯ã確ä¿ãã: CSSã¢ãŒã·ã§ã³ãã¹ãå®å šã«ãµããŒãããŠããªããã©ãŠã¶ã®ããã«ãåžžã«
@supports
ã䜿çšããŠé©åãªãã©ãŒã«ããã¯ãæäŸããŠãã ãããã¿ãŒã²ãããšããã°ããŒãã«å°åã§æ®åããŠããããŸããŸãªãã©ãŠã¶ãããã€ã¹ã§ã¢ãã¡ãŒã·ã§ã³ãåºç¯å²ã«ãã¹ãããäžè²«ããäœéšã確ä¿ããŠãã ããã -
ã¬ã¹ãã³ã·ãæ§ãèæ ®ããŠãã¶ã€ã³ãã:
offset-distance
ã«ã¯ããŒã»ã³ããŒãžã䜿çšããïŒurl()
ã§äœ¿çšããå ŽåïŒSVGãã¹ãviewBox
ã䜿çšããŠæ¬è³ªçã«ã¬ã¹ãã³ã·ãã§ããããšã確èªããŠãã ãããããã«ãããã¢ãã¡ãŒã·ã§ã³ãç°ãªããã¥ãŒããŒããµã€ãºã§èªåçã«ã¹ã±ãŒã«ããŸãã -
æåããã¢ã¯ã»ã·ããªãã£ãèæ ®ãã:
prefers-reduced-motion
ã¡ãã£ã¢ã¯ãšãªãå®è£ ããŠãã ãããååºé害ãåŒãèµ·ããå¯èœæ§ã®ããé床ãŸãã¯æ¥éãªåãã¯é¿ããŠãã ãããäžå¿çãªã¡ãã»ãŒãžãã€ã³ã¿ã©ã¯ã·ã§ã³ããçè§£ã®ããã«ã¢ãã¡ãŒã·ã§ã³ã ãã«äŸåããŠããªãããšã確èªããŠãã ãããå æ¬çãªãã¶ã€ã³ã¯ãããåºç¯ãªã°ããŒãã«ãªãŒãã£ãšã³ã¹ã«å±ããŸãã -
è€éãªãã¹ãææžåãã: éåžžã«è€éãª
path()
å®çŸ©ã«ã€ããŠã¯ãCSSã«ã³ã¡ã³ãã远å ããïŒãã«ãããã»ã¹å ã§å¯èœã§ããã°ïŒãããã¹ã®ç±æ¥ãç®çããŸãã¯ã©ã®ããŒã«ããããçæãããã説æããå€éšããã¥ã¡ã³ãã远å ããããšãæ€èšããŠãã ãããããã¯å°æ¥ã®ã¡ã³ããã³ã¹ãšã³ã©ãã¬ãŒã·ã§ã³ã«åœ¹ç«ã¡ãŸãã
çµè«ïŒãŠã§ãã¢ãã¡ãŒã·ã§ã³ã®æ°ããªèªè·¯ãåãéã
CSSã¢ãŒã·ã§ã³ãã¹ã¯ããŠã§ãã¢ãã¡ãŒã·ã§ã³ã®é åã«ãããéèŠãªé²åã®ã¹ãããã衚ããŠããŸããåŸæ¥ã®çŽç·ããã³å匧ããŒã¹ã®åãã®éçãè¶ ããéçºè ãåäŸã®ãªãã¬ãã«ã®ç²ŸåºŠãšæµåæ§ã§èŠçŽ ã®è»éãå®çŸ©ããå¶åŸ¡ããããšãå¯èœã«ããŸãããã®èœåã¯ããŠãŒã¶ãŒã®æ³šæãåŒãããã®åŸ®åŠãªUIã®åŒ·åããããªãŒãã£ãšã³ã¹ãæ²¡å ¥ãããé äºãã粟巧ãªç©èªã®ã·ãŒã±ã³ã¹ãŸã§ãåºç¯ãªåµé çå¯èœæ§ãè§£ãæŸã¡ãŸãã
offset-path
ãoffset-distance
ãoffset-rotate
ãoffset-anchor
ãšãã£ãåºæ¬ããããã£ããã¹ã¿ãŒããSVGãã¹ããŒã¿ã®è¡šçŸåãæ·±ãæ¢æ±ããããšã§ããã€ãããã¯ã§é
åçãªãŠã§ãäœéšãäœãåºãããã®çã«å€æãªããŒã«ãæã«å
¥ããããšãã§ããŸããã°ããŒãã«ãªéèåžå Žåãã®ã€ã³ã¿ã©ã¯ãã£ããªããŒã¿å¯èŠåãæ§ç¯ããŠããå Žåã§ããäžçäžã®ãŠãŒã¶ãŒããŒã¹åãã®çŽæçãªãªã³ããŒãã£ã³ã°ãããŒãèšèšããŠããå Žåã§ããæåçãªå¢çãè¶
ããé
åçãªã¹ããŒãªãŒããªã³ã°ãã©ãããã©ãŒã ãäœæããŠããå Žåã§ããCSSã¢ãŒã·ã§ã³ãã¹ã¯ããªããå¿
èŠãšããæŽç·Žãããã¢ãŒã·ã§ã³ã³ã³ãããŒã«ãæäŸããŸãã
å®éšãåãå ¥ããããã©ãŒãã³ã¹ãšã¢ã¯ã»ã·ããªãã£ãåªå ããåžžã«ã°ããŒãã«ãªãŠãŒã¶ãŒã念é ã«çœ®ããŠãã¶ã€ã³ããŠãã ãããã«ã¹ã¿ã ãã¹ã«æ²¿ã£ãèŠçŽ ã®æ ã¯ãåãªãèŠèŠçãªè¯ããã以äžã®ãã®ã§ããããã¯ãäžçäžã®é ã ããã®ãªãŒãã£ãšã³ã¹ã«å ±é³Žããããããã€ãããã¯ã§ãçŽæçã§ãå¿ããããªãã€ã³ã¿ã©ã¯ã·ã§ã³ãåµé ããæ©äŒã§ãããããã®ãã¯ããã¯ã次ã®ãããžã§ã¯ãã«çµ±åãå§ããåçŽãªçŽç·ã«æ±ºããŠå¶éãããããšãªããçã«ç©èªãèªãåãã§ããªãã®ãã¶ã€ã³ãçãçããšåãåºãã®ãèŠãŠãã ããã
ããªãã®åµé çãªè»è·¡ãå ±æããŠãã ããïŒ
CSSã¢ãŒã·ã§ã³ãã¹ã䜿ã£ãŠãã©ã®ãããªè€éãªã¢ãã¡ãŒã·ã§ã³ãå ·çŸåããŸãããïŒããªãã®æŽå¯ã課é¡ããããŠçŽ æŽããããããžã§ã¯ããäžã®ã³ã¡ã³ãã§å ±æããŠãã ããïŒããªãããããã®åŒ·åãªæ©èœã䜿ã£ãŠãã°ããŒãã«ãŠãŒã¶ãŒã®ãŠã§ãäœéšãã©ã®ããã«åäžãããŠããããèŠãã®ã楜ãã¿ã§ããç¹å®ã®ãã¹ã³ãã³ããé«åºŠãªããã©ãŒãã³ã¹ã®èª²é¡ã«ã€ããŠè³ªåããããŸããïŒäžç·ã«è°è«ããåŠã³ãŸãããïŒ