CSSã®ç¡åã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®äžçãæ¢æ±ããŸããããããã¯ãæç€ºçãªã¿ã€ã ã©ã€ã³åãªãã§ã¹ã¯ããŒã«é£åã¢ãã¡ãŒã·ã§ã³ãäœæãã匷åãªæ©èœã§ããé åçã§ããã©ãŒãã³ã¹ã®é«ãã¢ãã¡ãŒã·ã§ã³ãå®è£ ããæ¹æ³ãåŠã³ãŸãã
ã¢ãã¡ãŒã·ã§ã³ã®åãè§£ãæŸã€ïŒCSS Scroll Timeline Anonymous - ç¡åã¿ã€ã ã©ã€ã³ã®äœæ
Webã¢ãã¡ãŒã·ã§ã³ã®äžçã¯çµ¶ããé²åããŠãããCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ãã®é©åœã®æåç·ã«ãããŸãããã®æè¡ã«ãããèŠçŽ ã®ã¹ã¯ããŒã«äœçœ®ã«çŽæ¥é£åããã¢ãã¡ãŒã·ã§ã³ãäœæã§ãããã€ãããã¯ã§é åçãªãŠãŒã¶ãŒäœéšãæäŸããŸããååä»ãã¿ã€ã ã©ã€ã³ã¯ã¹ã¯ããŒã«é£åã¢ãã¡ãŒã·ã§ã³ã管çããããã®æ§é åãããã¢ãããŒããæäŸããŸãããç¡åïŒãŸãã¯ååãªãïŒã¿ã€ã ã©ã€ã³ã®æŠå¿µã¯ãã·ã³ãã«ã§ãããªãã广çãªãšãã§ã¯ããäœæããããã®ãããç°¡æœã§å¹ççãªæ¹æ³ãæäŸããŸãããã®èšäºã§ã¯ãCSS Scroll Timeline Anonymousãæ·±ãæãäžãããã®å©ç¹ããŠãŒã¹ã±ãŒã¹ãå®è£ ã«ã€ããŠæ¢æ±ããŸãã
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®çè§£
ç¡åã¿ã€ã ã©ã€ã³ã«æ·±å ¥ãããåã«ãCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®æ žãšãªãæŠå¿µãç°¡åã«åŸ©ç¿ããŸããããåºæ¬çã«ããããã¯ç¹å®ã®èŠçŽ ã®ã¹ã¯ããŒã«ã®é²æã«åºã¥ããŠCSSã¢ãã¡ãŒã·ã§ã³ãå¶åŸ¡ããããšãå¯èœã«ããŸããããã«ãããç䌌ã¯ã©ã¹ãJavaScriptã€ãã³ãã«ãã£ãŠããªã¬ãŒãããåŸæ¥ã®CSSã¢ãã¡ãŒã·ã§ã³ãã¯ããã«è¶ ããå¯èœæ§ãéãããŸããããŒãžãäžã«ã¹ã¯ããŒã«ããã«ã€ããŠã¹ã ãŒãºã«é²è¡ããã³ã³ãã³ãã衚瀺ããããèŠçŽ ã倿ãããããã©ã©ãã¯ã¹å¹æãçã¿åºãããããã¢ãã¡ãŒã·ã§ã³ãæ³åããŠã¿ãŠãã ããã
ã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãå®çŸ©ããã«ã¯ãäž»ã«2ã€ã®æ¹æ³ããããŸãïŒ
- ååä»ãã¿ã€ã ã©ã€ã³ïŒ ãããã¯
scroll-timeline-nameããããã£ã䜿çšããŠã¿ã€ã ã©ã€ã³åãæç€ºçã«å®çŸ©ããå¿ èŠããããŸãããã®åŸãanimation-timelineããããã£ã䜿çšããŠãã®ååãã¢ãã¡ãŒã·ã§ã³ã«é¢é£ä»ããŸãã - ç¡åã¿ã€ã ã©ã€ã³ïŒ ãããã¯ååãå¿ èŠãšããŸããããã©ãŠã¶ã¯ã¹ã¯ããŒã«ã³ã³ããã«åºã¥ããŠã¿ã€ã ã©ã€ã³ãæšæž¬ããŸãããã®ã¢ãããŒãã¯ãã·ã³ãã«ã§å±æçãªã¢ãã¡ãŒã·ã§ã³ã«æé©ã§ãã
CSS Scroll Timeline Anonymousãšã¯äœãïŒ
CSS Scroll Timeline Anonymousã¯ãã¿ã€ã ã©ã€ã³ãæç€ºçã«åœåããå¿
èŠæ§ããªããããšã§ãã¹ã¯ããŒã«é£åã¢ãã¡ãŒã·ã§ã³ã®äœæãç°¡çŽ åããŸããscroll-timeline-nameãšanimation-timelineã䜿çšãã代ããã«ãanimation-timeline: scroll();ããããã£ã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ãæãè¿ãã¹ã¯ããŒã«ã³ã³ããã«çŽæ¥ãªã³ã¯ããŸããããã«ããããã®ã³ã³ããã®ã¹ã¯ããŒã«äœçœ®ã«åºã¥ããŠã¿ã€ã ã©ã€ã³ãæé»çã«äœæãããŸãã
äžå¿çãªã¢ã€ãã¢ã¯ãèŠçŽ ã«animation-timeline: scroll();ãé©çšããããšã§ãããããšãã©ãŠã¶ã¯ãDOMããªãŒãäžã«æ€çŽ¢ããŠãæãè¿ãã¹ã¯ããŒã«ã³ã³ããïŒoverflow: auto, overflow: scroll, overflow-x: auto, overflow-y: auto, overflow-x: scroll, ãŸãã¯overflow-y: scrollãæã€èŠçŽ ïŒãèŠã€ããŸãããã®ã³ã³ããã®ã¹ã¯ããŒã«äœçœ®ããã¢ãã¡ãŒã·ã§ã³ãåããåååãšãªããŸãã
ç¡åã¿ã€ã ã©ã€ã³ã䜿çšããäž»ãªå©ç¹ã¯æ¬¡ã®ãšããã§ãïŒ
- ã·ã³ãã«ãïŒ å¿ èŠãªã³ãŒããå°ãªããªããããã¯ãªãŒã³ã§ä¿å®ããããã¹ã¿ã€ã«ã·ãŒãã«ãªããŸãã
- 屿æ§ïŒ ã¢ãã¡ãŒã·ã§ã³ã¯ã¹ã¯ããŒã«ã³ã³ããã«çŽæ¥çµã³ä»ãããããããç¹å®ã®ã³ã³ããŒãã³ãå ã§ã®ç®¡çãçè§£ã容æã«ãªããŸãã
- ããã©ãŒãã³ã¹ïŒ å Žåã«ãã£ãŠã¯ãååä»ãã¿ã€ã ã©ã€ã³ã®ç®¡çãªãŒããŒããããåæžããããããç¡åã¿ã€ã ã©ã€ã³ã®æ¹ããããã«åªããããã©ãŒãã³ã¹ãçºæ®ããããšããããŸãã
ç¡åã¿ã€ã ã©ã€ã³ã䜿çšãã¹ãæ
ç¡åã¿ã€ã ã©ã€ã³ã¯ç¹ã«æ¬¡ã®ãããªå Žåã«é©ããŠããŸãïŒ
- ã·ã³ãã«ã§å±æçãªã¢ãã¡ãŒã·ã§ã³ïŒ åäžã®ã¢ãã¡ãŒã·ã§ã³ãããã®çŽæ¥ã®èŠªãŸãã¯è¿ãã®ã¹ã¯ããŒã«ã³ã³ããã®ã¹ã¯ããŒã«äœçœ®ã«ãã£ãŠåããå¿ èŠãããå Žåã
- çŽ æ©ããããã¿ã€ãã³ã°ãšå®éšïŒ ã³ãŒããå°ãªããããã¢ã€ãã¢ãã³ã³ã»ãããçŽ æ©ã詊ãã®ã«çæ³çã§ãã
- èªå·±å®çµåã¢ãã¡ãŒã·ã§ã³ãæã€ã³ã³ããŒãã³ãïŒ ã³ã³ããŒãã³ããç¬èªã®å éšã¹ã¯ããŒã«ãšé¢é£ã¢ãã¡ãŒã·ã§ã³ãæã€å Žåãç¡åã¿ã€ã ã©ã€ã³ã¯ã¯ãªãŒã³ã§ã«ãã»ã«åããããœãªã¥ãŒã·ã§ã³ãæäŸããŸãã
ããããç¡åã¿ã€ã ã©ã€ã³ã¯æ¬¡ã®ãããªå Žåã«ã¯æé©ã§ã¯ãªããããããŸããïŒ
- è€æ°ã®ã¿ã€ã ã©ã€ã³ãé¢äžããè€éãªã¢ãã¡ãŒã·ã§ã³ïŒ ç°ãªãã¹ã¯ããŒã«ã³ã³ãããä»ã®èŠçŽ ã«åºã¥ããŠã¢ãã¡ãŒã·ã§ã³ãåæãããå¿ èŠãããå Žåãååä»ãã¿ã€ã ã©ã€ã³ã®æ¹ãããé«åºŠãªå¶åŸ¡ãæäŸããŸãã
- è€æ°ã®ã³ã³ããŒãã³ãéã§åå©çšå¯èœãªã¢ãã¡ãŒã·ã§ã³ïŒ ååä»ãã¿ã€ã ã©ã€ã³ã䜿çšãããšãäžåºŠã¢ãã¡ãŒã·ã§ã³ãå®çŸ©ããã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãéšåã§åå©çšã§ããŸãã
- ã¿ã€ãã³ã°ããªãã»ããã®ç²Ÿå¯ãªå¶åŸ¡ãå¿ èŠãªã¢ãã¡ãŒã·ã§ã³ïŒ ç¡åã¿ã€ã ã©ã€ã³ã¯åºæ¬çãªå¶åŸ¡ãæäŸããŸãããååä»ãã¿ã€ã ã©ã€ã³ã¯ã¢ãã¡ãŒã·ã§ã³ã®æåã埮調æŽããããã®ããé«åºŠãªãªãã·ã§ã³ãæäŸããŸãã
CSS Scroll Timeline Anonymousã®å®è£ ïŒå®è·µäŸ
CSS Scroll Timeline Anonymousã广çã«äœ¿çšããæ¹æ³ã説æããããã«ãããã€ãã®å®è·µçãªäŸãèŠãŠãããŸãããã
äŸ1ïŒã¹ã¯ããŒã«æã«ç»åããã§ãŒãã€ã³ããã
ãã®äŸã§ã¯ããŠãŒã¶ãŒãç»åããã¥ãŒã«ã¹ã¯ããŒã«ããã«ã€ããŠãã§ãŒãã€ã³ãããæ¹æ³ã瀺ããŸãã
<div style="height: 300px; overflow-y: scroll;">
<div style="height: 600px;">
<img style="width: 100%; opacity: 0; animation: fadeIn linear forwards; animation-timeline: scroll(); animation-range: entry 20% cover 80%;" src="image.jpg" alt="Scroll-triggered Image"/>
</div>
</div>
<style>
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
</style>
解説ïŒ
overflow-y: scrollãæã€divãããããããã¹ã¯ããŒã«ã³ã³ãããäœæããŸãã- ãã®äžã«ãã¹ã¯ããŒã«å¯èœãªã³ã³ãã³ããæäŸããããã®å¥ã®
divãšimgèŠçŽ ããããŸãã imgèŠçŽ ã«ã¯animation: fadeIn linear forwards;ãããã䜿çšããã¢ãã¡ãŒã·ã§ã³ãå®çŸ©ããŸãã- éèŠãªã®ã¯ã
animation-timeline: scroll();ãã芪ã®ã¹ã¯ããŒã«ã³ã³ããã«åºã¥ãç¡åã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã䜿çšãããããã©ãŠã¶ã«æç€ºããããšã§ãã animation-range: entry 20% cover 80%;ã¯ãã¢ãã¡ãŒã·ã§ã³ãçºçããã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®éšåãå®çŸ©ããŸãããentry 20%ãã¯ç»åã®äžéšããã¥ãŒããŒãã®é«ãã®20%ã ããã¥ãŒããŒãã«å ¥ã£ããšãã«ã¢ãã¡ãŒã·ã§ã³ãéå§ããããšãæå³ããŸãããcover 80%ãã¯ç»åã®äžéšããã¥ãŒããŒãã®é«ãã®80%ãã«ããŒãããšãã«ã¢ãã¡ãŒã·ã§ã³ãå®äºããããšãæå³ããŸããfadeInããŒãã¬ãŒã ã¯ãç»åã®äžéæåºŠã0ãã1ã«ãã§ãŒããããå®éã®ã¢ãã¡ãŒã·ã§ã³ãå®çŸ©ããŸãã
äŸ2ïŒã¹ã¯ããŒã«äœçœ®ã«åºã¥ãããã°ã¬ã¹ããŒ
ãã®äŸã§ã¯ããŠãŒã¶ãŒãããŒãžãäžã«ã¹ã¯ããŒã«ããã«ã€ããŠæºããããŠããããã°ã¬ã¹ããŒãäœæããæ¹æ³ã瀺ããŸãã
<div style="height: 200px; overflow-y: scroll; position: relative;">
<div style="height: 1000px;"></div>
<div style="position: absolute; top: 0; left: 0; width: 0%; height: 10px; background-color: blue; animation: fillBar linear forwards; animation-timeline: scroll();"></div>
</div>
<style>
@keyframes fillBar {
to { width: 100%; }
}
</style>
解説ïŒ
overflow-y: scrollãšposition: relativeãæã€divããããã¹ã¯ããŒã«ã³ã³ãããäœæãã絶察äœçœ®æå®ã®ã³ã³ããã¹ãã確ç«ããŸãã- ãã®äžã«ãã¹ã¯ããŒã«å¯èœãªã³ã³ãã³ããå®çŸ©ããããã®å¥ã®
divãšãããã°ã¬ã¹ããŒãšããŠæ©èœããdivããããŸãã - ããã°ã¬ã¹ããŒã®
divã¯ãã¹ã¯ããŒã«ã³ã³ããã®äžéšã«é 眮ããããã«position: absoluteãåæå¹ ãšããŠwidth: 0%ããããŠã¢ãã¡ãŒã·ã§ã³ãå®çŸ©ããããã«animation: fillBar linear forwards;ãæã¡ãŸãã animation-timeline: scroll();ã¯ãã¢ãã¡ãŒã·ã§ã³ã芪ã³ã³ããã®ç¡åã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã«ãªã³ã¯ããŸããfillBarããŒãã¬ãŒã ã¯ãããã°ã¬ã¹ããŒã®å¹ ã0%ãã100%ã«ã¢ãã¡ãŒã·ã§ã³ãããŸãã
äŸ3ïŒã¹ã¯ããŒã«æã«èŠçŽ ãå転ããã
ãã®äŸã§ã¯ããŠãŒã¶ãŒãã¹ã¯ããŒã«ããã«ã€ããŠèŠçŽ ãå転ãããæ¹æ³ã瀺ããŸãã
<div style="height: 300px; overflow-y: scroll;">
<div style="height: 600px; display: flex; justify-content: center; align-items: center;">
<div style="width: 100px; height: 100px; background-color: red; animation: rotate linear forwards; animation-timeline: scroll();"></div>
</div>
</div>
<style>
@keyframes rotate {
to { transform: rotate(360deg); }
}
</style>
解説ïŒ
overflow-y: scrollãæã€ã¹ã¯ããŒã«ã³ã³ããã®divããããŸãã- ãã®äžã«ãã¹ã¯ããŒã«å¯èœãªã³ã³ãã³ããæäŸããå転ããèŠçŽ ãäžå€®ã«é
眮ããããã®å¥ã®
divããããŸãã - å転ãã
divã¯ãåºå®ã®å¹ ãšé«ããèæ¯è²ããããŠanimation: rotate linear forwards;ãæã¡ãŸãã animation-timeline: scroll();ã¯ãå転ã¢ãã¡ãŒã·ã§ã³ãç¡åã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã«æ¥ç¶ããŸããrotateããŒãã¬ãŒã ã¯å転ãå®çŸ©ããèŠçŽ ã360床å€åœ¢ãããŸãã
ç¡åã¿ã€ã ã©ã€ã³ã¢ãã¡ãŒã·ã§ã³ã®åŸ®èª¿æŽ
ç¡åã¿ã€ã ã©ã€ã³ã¯ã·ã³ãã«ã§ããã以äžã®CSSããããã£ã䜿çšããŠãã®æåã埮調æŽããããšãã§ããŸãïŒ
animation-duration: ã¢ãã¡ãŒã·ã§ã³ã®æéãæå®ããŸããã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®å Žåãããã¯å®è³ªçã«ã¢ãã¡ãŒã·ã§ã³ãå®äºããããã«ã©ãã ãã®ã¹ã¯ããŒã«ãå¿ èŠããå¶åŸ¡ããŸããæéãé·ãã»ã©ãã¢ãã¡ãŒã·ã§ã³ãçµããããã«ããé·ãã¹ã¯ããŒã«ããå¿ èŠããããŸããanimation-timing-function: ã¢ãã¡ãŒã·ã§ã³ã®é床æ²ç·ãå¶åŸ¡ããŸããäžè¬çãªå€ã«ã¯linear,ease,ease-in,ease-out,ease-in-outãªã©ããããŸããanimation-delay: ã¢ãã¡ãŒã·ã§ã³ãéå§ãããŸã§ã®é å»¶ãæå®ããŸãããã®é å»¶ã¯å®éã®æéã§ã¯ãªããã¹ã¯ããŒã«ã®éå§ã«çžå¯Ÿçãªãã®ã§ããanimation-iteration-count: ã¢ãã¡ãŒã·ã§ã³ãäœåç¹°ãè¿ãããããæ±ºå®ããŸããé£ç¶ã«ãŒãã«ã¯infiniteã䜿çšããŸããanimation-direction: ã¢ãã¡ãŒã·ã§ã³ã®æ¹åãå¶åŸ¡ããŸããå€ã«ã¯normal,reverse,alternate,alternate-reverseãªã©ããããŸããanimation-fill-mode: ã¢ãã¡ãŒã·ã§ã³ãå®è¡ååŸã«ã©ã®ããã«ã¹ã¿ã€ã«ãé©çšããããæå®ããŸããå€ã«ã¯none,forwards,backwards,bothãªã©ããããŸããanimation-range: äžã®äŸã§èŠãããã«ãããã«ããã¹ã¯ããŒã«ã³ã³ããã®ã¹ã¯ããŒã«å¯èœé åå ã§ã¢ãã¡ãŒã·ã§ã³ãã¢ã¯ãã£ãã«ãªãç¯å²ãæå®ã§ããŸããããã¯ãèŠçŽ ããã¥ãŒããŒãã®ç¹å®ã®éšåã«ãããšãã«ã®ã¿ããªã¬ãŒãããã¢ãã¡ãŒã·ã§ã³ãäœæããããã«éèŠã§ãã
ãã©ãŠã¶ã®äºææ§ãšãã©ãŒã«ããã¯
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯æ¯èŒçæ°ããæ©èœã§ããããããã©ãŠã¶ã®äºææ§ã¯éåžžã«éèŠã§ãã2023幎åŸåãã2024幎åé ã«ãããŠãChromeãEdgeãSafariãªã©ã®äž»èŠãªãã©ãŠã¶ãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ããµããŒãããŠããŸããFirefoxã®ãµããŒãã¯éçºäžã§ããããŸã å®å šã«ã¯å®è£ ãããŠããŸããã
ãã¹ãŠã®ãã©ãŠã¶ã§è¯å¥œãªãŠãŒã¶ãŒäœéšãä¿èšŒããããã«ã以äžãæ€èšããŠãã ããïŒ
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãïŒ ãµããŒãããŠãããã©ãŠã¶ã«ã¯CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã䜿çšããŠäœéšãåäžãããå€ããã©ãŠã¶ã«ã¯åºæ¬çã§æ©èœçãªäœéšãæäŸããŸãã
- æ©èœæ€åºïŒ JavaScriptã䜿çšããŠãã©ãŠã¶ãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ããµããŒãããŠããããæ€åºããå¿
èŠã«å¿ããŠä»£æ¿ãœãªã¥ãŒã·ã§ã³ãå®è£
ããŸããç°¡åãªãã§ãã¯ã¯æ¬¡ã®ããã«ãªããŸãïŒ
if ('animationTimeline' in document.documentElement.style) { // Scroll timelines are supported } else { // Implement fallback using JavaScript and scroll events } - ããªãã£ã«ïŒ CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®ããªãã£ã«ã¯è€éã§ããã€ãã£ãã®æåãå®å šã«åçŸã§ããªããããããŸããããå€ããã©ãŠã¶ã«å¯ŸããŠã¯åŠ¥åœãªãã©ãŒã«ããã¯ãæäŸã§ããŸãã
ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ã¹ã¯ããŒã«é£åã¢ãã¡ãŒã·ã§ã³ãäœæããããã©ãŒãã³ã¹ã®é«ãæ¹æ³ãæäŸããŸãããç¹ã«è€éãªã¢ãã¡ãŒã·ã§ã³ããªãœãŒã¹ãéãããããã€ã¹ã§ã¯ãããã©ãŒãã³ã¹ã念é ã«çœ®ãããšãäžå¯æ¬ ã§ãã
ããã©ãŒãã³ã¹ãæé©åããããã®ãã³ããããã€ã玹ä»ããŸãïŒ
- ã¢ãã¡ãŒã·ã§ã³ãã·ã³ãã«ã«ä¿ã€ïŒ ãã©ãŠã¶ã®ã¬ã³ããªã³ã°ãšã³ãžã³ã«è² æ ããããå¯èœæ§ã®ãããé床ã«è€éãªã¢ãã¡ãŒã·ã§ã³ã¯é¿ããŸãã
- ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšããïŒ
transformãopacityãªã©ã®ããããã£ã䜿çšããŠãã¢ãã¡ãŒã·ã§ã³ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãããããã«ããŸãã - ã¹ã¯ããŒã«ã€ãã³ããªã¹ããŒããããŠã³ã¹ããïŒJavaScriptãã©ãŒã«ããã¯ã®å ŽåïŒïŒ ãã©ãŒã«ããã¯ãå®è£ ããããã«JavaScriptã䜿çšããŠããå Žåãã¹ã¯ããŒã«ã€ãã³ããªã¹ããŒããããŠã³ã¹ããŠæŽæ°ã®é »åºŠãæžãããŸãã
- æ§ã ãªããã€ã¹ã§ãã¹ãããïŒ ç°ãªãããã€ã¹ããã©ãŠã¶ã§ã¢ãã¡ãŒã·ã§ã³ã培åºçã«ãã¹ãããæœåšçãªããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸãã
- ã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ãæå°éã«æããïŒ ã¢ãã¡ãŒã·ã§ã³å ã§DOMã倿Žããããã¬ã€ã¢ãŠãèšç®ãããªã¬ãŒãããããããšã¯é¿ããŸãã
ã°ããŒãã«ãªã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãå®è£ ããéã«ã¯ãã¢ãã¡ãŒã·ã§ã³ãé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠéå£ãšãªããªãããã«ãã¢ã¯ã»ã·ããªãã£ãèæ ®ããããšãéèŠã§ãã
- åãã®äœæžã奜ããŠãŒã¶ãŒã«ä»£æ¿ææ®µãæäŸããïŒ äžéšã®ãŠãŒã¶ãŒã¯ã¢ãã¡ãŒã·ã§ã³ã«ãã£ãŠä¹ãç©é
ããäžå¿«æãæããããšããããŸãã
prefers-reduced-motionã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãã¢ãã¡ãŒã·ã§ã³ãç¡å¹ãŸãã¯äœæžãããªãã·ã§ã³ãæäŸããŸããäŸïŒ@media (prefers-reduced-motion: reduce) { .animated-element { animation: none !important; transition: none !important; } } - ã¢ãã¡ãŒã·ã§ã³ãæ¯æŽæè¡ã劚ããªãããã«ããïŒ ã¢ãã¡ãŒã·ã§ã³ãã³ã³ãã³ããé ããããã¹ã¯ãªãŒã³ãªãŒããŒã䜿çšãããŠãŒã¶ãŒãæ å ±ã«ã¢ã¯ã»ã¹ãã«ãããããããªãããã«ããŸãã
- ã¢ãã¡ãŒã·ã§ã³ã責任ãæã£ãŠäœ¿çšããïŒ éåºŠã«æ³šæãæ£ããã¢ãã¡ãŒã·ã§ã³ãã代æ¿ããã¹ãã説æãªãã«éèŠãªæ å ±ãäŒããã¢ãã¡ãŒã·ã§ã³ã®äœ¿çšã¯é¿ããŸãã
- ååãªã³ã³ãã©ã¹ããæäŸããïŒ ã¢ãã¡ãŒã·ã§ã³åãããèŠçŽ ãšãã®èæ¯ãšã®éã®ã³ã³ãã©ã¹ãããèŠèŠé害ã®ãããŠãŒã¶ãŒã«ãšã£ãŠååã§ããããšã確èªããŸãã
çµè«
CSS Scroll Timeline Anonymousã¯ãã¹ã¯ããŒã«é£åã¢ãã¡ãŒã·ã§ã³ãäœæããããã®ç°¡æœã§å¹ççãªæ¹æ³ãæäŸããŸããæç€ºçãªã¿ã€ã ã©ã€ã³åãäžèŠã«ããããšã§ãã³ãŒããç°¡çŽ åãã屿çãªã¢ãã¡ãŒã·ã§ã³ã®ç®¡çã容æã«ããŸãããã¹ãŠã®ã·ããªãªã«é©ããŠããããã§ã¯ãããŸããããç¡åã¿ã€ã ã©ã€ã³ã¯ãç¹ã«ã·ã³ãã«ãªãšãã§ã¯ããçŽ æ©ããããã¿ã€ãã³ã°ãèªå·±å®çµåã®ã³ã³ããŒãã³ãã¢ãã¡ãŒã·ã§ã³ã«ãããŠãWebéçºè ã®ããŒã«ããã¯ã¹ã«ããã貎éãªããŒã«ã§ãããã©ãŠã¶ã®ãµããŒããåäžãç¶ããã«ã€ããŠãååä»ããšç¡åã®äž¡æ¹ã®CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ãé åçã§ããã©ãŒãã³ã¹ã®é«ãWebäœéšãåµé ããäžã§ããŸããŸãéèŠãªåœ¹å²ãæããããšã«ãªãã§ãããã
ãã®èšäºã§èª¬æããååãšãã¯ããã¯ãçè§£ããããšã§ãCSS Scroll Timeline Anonymousã®åãæŽ»çšããŠããŠãŒã¶ãŒäœéšãåäžãããWebããŒãžã«åœãå¹ã蟌ããèŠäºã§ã€ã³ã¿ã©ã¯ãã£ããªã¢ãã¡ãŒã·ã§ã³ãäœæã§ããŸããã¢ãã¡ãŒã·ã§ã³ãããã€ã¹ãèœåã«é¢ãããããã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠå©çšå¯èœã§æ¥œãããã®ã«ãªãããã«ããã©ãŠã¶ã®äºææ§ãããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ãèæ ®ããããšãå¿ããªãã§ãã ãããæäŸãããäŸã詊ããããããŸããŸãªã¢ãã¡ãŒã·ã§ã³æè¡ãæ¢æ±ãããããŠãCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®å¯èœæ§ãæå€§éã«åŒãåºããçã«é åçãªWebäœéšãåµé ããŠãã ããã