CSSã®scroll-behaviorããã¹ã¿ãŒãããã€ãã£ãã®ã¹ã ãŒãºã¹ã¯ããŒã«ãå®çŸãå®è£ æ¹æ³ãã°ããŒãã«ãªãã¹ããã©ã¯ãã£ã¹ã解説ããUXãåäžãããã¬ã€ãã§ãã
CSS Scroll Behavior: ã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®ããã®ãã€ãã£ãã¹ã ãŒãºã¹ã¯ããŒã«ã®å®çŸ
å€åã®æ¿ããWebéçºã®äžçã«ãããŠãé åçã§çŽæçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒãåµåºããããšã¯æãéèŠã§ããããã«å€§ããè²¢ç®ãããç¹çްã§ãããªãã匷åãªãã¯ããã¯ã®äžã€ãã¹ã ãŒãºã¹ã¯ããŒã«ã§ããé·ããŠã§ãããŒãžãããã²ãŒãããããå éšãªã³ã¯ãã¯ãªãã¯ãããããéã®ãäžå¿«ã§ç¬éçãªãžã£ã³ãã¯éå»ã®ãã®ã§ããçŸä»£ã®Webãã¶ã€ã³ã¯æµåæ§ãåªå ããŠãããCSS Scroll Behaviorã¯ãããç°¡åã«å®çŸããããã®å ¥ãå£ãšãªããŸãã
ãã®å
æ¬çãªã¬ã€ãã§ã¯ãCSSã®scroll-behavior
ããããã£ãæ·±ãæãäžãããã®æ©èœãå®è£
ããã¹ããã©ã¯ãã£ã¹ããããŠã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ãžã®é
æ
®ã«ã€ããŠæ¢æ±ããŸããããªããçµéšè±å¯ãªããã³ããšã³ãéçºè
ã§ãã£ãŠãããã£ãªã¢ãå§ããã°ããã§ãã£ãŠãããã€ãã£ãã®ã¹ã ãŒãºã¹ã¯ããŒã«ãçè§£ãå®è£
ããããšã§ãããªãã®ãŠã§ããµã€ããæ©èœçãªãã®ããçã«åè¶ãããã®ãžãšæè¯ãããããšãã§ããŸãã
ã¹ã ãŒãºã¹ã¯ããŒã«ã®å¿ èŠæ§ãçè§£ãã
ãŠã§ããµã€ãäžã®é·ãèšäºãé²èЧããŠãããšæ³åããŠã¿ãŠãã ãããããã©ã«ãã®ã¹ã¯ããŒã«ã§ã¯ãããããã«æ»ãããªã³ã¯ãå éšã®ã¢ã³ã«ãŒãªã³ã¯ãã¯ãªãã¯ãããšãã¿ãŒã²ããã»ã¯ã·ã§ã³ãžãšå³åº§ã«ãçªç¶ãžã£ã³ãããŸããããã¯ç¹ã«ã³ã³ãã³ãéãå€ãããŒãžã§ã¯æ¹åæèŠã倱ãããå¯èœæ§ãããããŠãŒã¶ãŒãããŒããããã§ãã·ã§ãã«ãªå°è±¡ã«æªåœ±é¿ãäžããããšããããŸãã
äžæ¹ãã¹ã ãŒãºã¹ã¯ããŒã«ã¯ãçŸåšã®ã¹ã¯ããŒã«äœçœ®ããã¿ãŒã²ãããŸã§æ®µéçãªã¢ãã¡ãŒã·ã§ã³ãæäŸããŸãããã®ç©ãããªé·ç§»ã«ã¯ä»¥äžã®å©ç¹ããããŸãïŒ
- å¯èªæ§ã®åäžïŒ ãŠãŒã¶ãŒãã»ã¯ã·ã§ã³éãç§»åããéã«æèãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
- ããã²ãŒã·ã§ã³ã®æ¹åïŒ é·ãããŒãžã®ããã²ãŒã·ã§ã³ãããå¶åŸ¡ãããããäžå¿«æãå°ãªããªããŸãã
- å質èªèã®åäžïŒ ã¹ã ãŒãºãªã¹ã¯ããŒã«äœéšã¯ããã°ãã°é«ãã¬ãã«ã®æŽç·Žæ§ãšçްéšãžã®ãã ãããäŒããŸãã
- ã¢ã¯ã»ã·ããªãã£ã®ãµããŒãïŒ ç¹å®ã®èªç¥é害ãéåé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠãå¶åŸ¡ãããã¹ã¯ããŒã«ã¯ç¬éçãªãžã£ã³ãããã远ããããå ŽåããããŸãã
scroll-behavior
ã®å
CSSã®scroll-behavior
ããããã£ã¯ãã¹ã¯ããŒã«å¯èœãªèŠçŽ ã®ã¹ã¯ããŒã«ã¢ãã¡ãŒã·ã§ã³ãå¶åŸ¡ããããã®ããã€ãã£ãã§æãå¹ççãªæ¹æ³ã§ããäž»ã«2ã€ã®å€ãæäŸããŸãïŒ
auto
ïŒãããããã©ã«ãå€ã§ããã¹ã¯ããŒã«ã¯å³åº§ã«ãç¬éçã«è¡ãããŸããã¢ãã¡ãŒã·ã§ã³ã¯çºçããŸãããsmooth
ïŒã¹ã¯ããŒã«ã¢ã¯ã·ã§ã³ãããªã¬ãŒããããšãïŒäŸïŒã¢ã³ã«ãŒãªã³ã¯ã®ã¯ãªãã¯ïŒããã©ãŠã¶ã¯ã¿ãŒã²ãããžã®ã¹ã¯ããŒã«ãã¢ãã¡ãŒã·ã§ã³åããŸãã
ãã€ãã£ãã¹ã ãŒãºã¹ã¯ããŒã«ã®å®è£
scroll-behavior
ã䜿çšããã¹ã ãŒãºã¹ã¯ããŒã«ã®å®è£
ã¯éåžžã«ç°¡åã§ããäž»ã«ãã¹ã¯ããŒã«ãããèŠçŽ ã«é©çšããå¿
èŠããããŸããã»ãšãã©ã®ãŠã§ãããŒãžã§ã¯ããã¥ãŒããŒãã®ã¹ã¯ããŒã«ã管çããhtml
ãŸãã¯body
èŠçŽ ãããã«è©²åœããŸãã
äŸ1: ããŒãžå šäœãžã®é©çš
ãŠã§ãããŒãžå
šäœã§ã¹ã ãŒãºã¹ã¯ããŒã«ãæå¹ã«ããã«ã¯ãhtml
èŠçŽ ãã¿ãŒã²ããã«ããŸãïŒbody
ã§ãå¯èœã§ãããç°ãªãã¬ã³ããªã³ã°ãšã³ãžã³éã§ã®åºç¯ãªäºææ§ã®ããã«html
ããã°ãã°å¥œãŸããŸãïŒïŒ
html {
scroll-behavior: smooth;
}
ãã®ã·ã³ãã«ãªCSSã«ãŒã«ã ãã§ããã¥ãŒããŒãå
ã®ã¢ã³ã«ãŒãªã³ã¯ïŒäŸïŒ<a href="#section-id">ã»ã¯ã·ã§ã³ãžç§»å</a>
ïŒãã¯ãªãã¯ãããšã察å¿ããIDãæã€èŠçŽ ïŒäŸïŒ<div id="section-id">...</div>
ïŒãžã®ã¹ã ãŒãºã¹ã¯ããŒã«ãããªã¬ãŒãããŸãã
äŸ2: ç¹å®ã®ã¹ã¯ããŒã«å¯èœã³ã³ãããžã®é©çš
ãµã€ãããŒãã¢ãŒãã«ãŠã£ã³ããŠãã«ã¹ã¿ã ã³ã³ãã³ããšãªã¢ãªã©ãããŒãžäžã«ã¹ã¯ããŒã«å¯èœãªç¹å®ã®èŠçŽ ãããå ŽåããããŸãããã®ãããªå Žåãscroll-behavior: smooth;
ããã®èŠçŽ ã«çŽæ¥é©çšã§ããŸãïŒ
.scrollable-content {
height: 300px;
overflow-y: scroll;
scroll-behavior: smooth;
}
ãã®ã·ããªãªã§ã¯ã.scrollable-content
ã³ã³ããå
ã®ã¹ã¯ããŒã«ã®ã¿ãã¢ãã¡ãŒã·ã§ã³åãããŸãããã®ç¹å®ã®ã³ã³ããå
ã®èŠçŽ ãã¿ãŒã²ãããšããå
éšãªã³ã¯ãã¹ã¯ããŒã«ã³ãã³ãããã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ã®æ©æµãåããŸãã
ãã©ãŠã¶ã®ãµããŒããšèæ ®äºé
scroll-behavior
ããããã£ã¯ããã¹ãŠã®ã¢ãã³ãã©ãŠã¶ã§å¹
åºããµããŒããããŠããŸããããã«ãããã»ãšãã©ã®å Žåã§JavaScriptã®ãã©ãŒã«ããã¯ãå¿
èŠãšããã«ããã€ãã£ãã®ã¹ã ãŒãºã¹ã¯ããŒã«ãå®è£
ããããã®ä¿¡é Œã§ããéžæè¢ãšãªããŸãã
ããããæœåšçãªãã¥ã¢ã³ã¹ã«æ³šæãæãããšã¯åžžã«è¯ãç¿æ £ã§ãïŒ
- å€ããã©ãŠã¶ïŒ ãµããŒãã¯åªããŠããŸãããéåžžã«ããããªããŸãã¯ã¬ã¬ã·ãŒãªãã©ãŠã¶ã®ãµããŒãèŠä»¶ãããå Žåã¯ããã©ãŒã«ããã¯ãšããŠJavaScriptããŒã¹ã®ã¹ã ãŒãºã¹ã¯ããŒã«ãœãªã¥ãŒã·ã§ã³ãæ€èšããããšãã§ããŸãã
- ã¹ã¯ããŒã«ããŒã®ã¹ã¿ã€ãªã³ã°ïŒ ã¹ã¯ããŒã«ããŒãã¹ã¿ã€ãªã³ã°ããå ŽåïŒäŸïŒ
::-webkit-scrollbar
ã䜿çšïŒãã¹ã¿ã€ã«ãã¢ãã¡ãŒã·ã§ã³ã劚ããªãããã«ç¢ºèªããŠãã ããã
ã°ããŒãã«ãªèŠç¹ãšãã¹ããã©ã¯ãã£ã¹
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ãã¶ã€ã³ããå Žåããã®ãããªæ©èœãç°ãªãæåãæè¡ç°å¢ã§ã©ã®ããã«èªèãããããçè§£ããããšãéèŠã§ãã幞ããªããšã«ãã¹ã ãŒãºã¹ã¯ããŒã«ã¯æ®éçã«è©äŸ¡ãããUXã®åäžçã§ãã
ãã¹ãŠã®äººã®ããã®ã¢ã¯ã»ã·ããªãã£
ãŠã§ããµã€ãã誰ã«ã§ãã¢ã¯ã»ã¹å¯èœã§ããããšãä¿èšŒããããšã¯ãçŸä»£ã®Webéçºã®äžæ žçãªååã§ããscroll-behavior: smooth;
ã¯ããã€ãã®æ¹æ³ã§ã¢ã¯ã»ã·ããªãã£ã«è²¢ç®ããŸãïŒ
- åãã«å¯Ÿããéææ§ã®äœæžïŒ ããã©ã«ãã®ã¹ã ãŒãºã¹ã¯ããŒã«ã¯äžè¬çã«ç©ããã§ãããååºé害ãåãã«ææãªäžéšã®ãŠãŒã¶ãŒã¯ãã©ããªã¢ãã¡ãŒã·ã§ã³ã§ãäžå¿«ã«æããããšããããŸãã
prefers-reduced-motion
ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠããããã®ãŠãŒã¶ãŒã®ããã«ã¹ã ãŒãºã¹ã¯ããŒã«ãç¡å¹ã«ããããšãã§ããŸãã
äŸ3: åãã®äœæžãåžæãããŠãŒã¶ãŒèšå®ã®å°é
prefers-reduced-motion
ã¡ãã£ã¢ã¯ãšãªãçµ±åããŠããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®èšå®ã§ã¢ãã¡ãŒã·ã§ã³ãå°ãªãããããšãåžæãããŠãŒã¶ãŒã®ããã«ãç¬éçãªã¹ã¯ããŒã«ãžã®ãã©ãŒã«ããã¯ãæäŸã§ããŸãïŒ
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
}
ããã«ãããåãã«ææãªãŠãŒã¶ãŒãã¹ã ãŒãºã¹ã¯ããŒã«æ©èœã«ãã£ãŠæªåœ±é¿ãåããªãããšãä¿èšŒãããææ ®æ·±ãå æ¬çãªãã¶ã€ã³ã¢ãããŒãã瀺ãããŸããããã¯ãã¢ã¯ã»ã·ããªãã£ã®ããŒãºã倿§ã§ããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠç¹ã«éèŠã§ãã
ããã©ãŒãã³ã¹ãžã®åœ±é¿
ãã€ãã£ãã®CSS scroll-behavior
ããããã£ã䜿çšããäž»ãªå©ç¹ã®äžã€ã¯ããã®åªããããã©ãŒãã³ã¹ã§ãããã©ãŠã¶ã¯ãããã®ã¢ãã¡ãŒã·ã§ã³ãå¹ççã«åŠçããããã«é«åºŠã«æé©åãããŠããããã°ãã°ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã掻çšããŸããããã¯éåžžãããŒãžã®åã¬ã³ããªã³ã°ãç¶ç¶çãªJavaScriptã®å®è¡ãå¿
èŠãšããå¯èœæ§ãããJavaScriptããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãšæ¯èŒããŠãããã¹ã ãŒãºã§ããã©ãŒãã³ã¹ã®é«ãäœéšããããããŸãã
æ§ã ãªãããã¯ãŒã¯ç¶æ³ãããã€ã¹ã䜿çšããå¯èœæ§ã®ããã°ããŒãã«ãªãªãŒããæã€ãŠã§ããµã€ãã«ãšã£ãŠãããã©ãŒãã³ã¹ã®ããã«ãã€ãã£ãã®ãã©ãŠã¶æ©èœãåªå ããããšã¯åžžã«è³¢æãªæŠç¥ã§ãã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒã®çžä¹å¹æ
scroll-behavior
ã¯ã埮åŠãªUIã®å€æŽãã©ã®ããã«ããŠå€§å¹
ãªUXã®æ¹åã«ã€ãªãããã瀺ãå®ç§ãªäŸã§ããããã¯ãæ©èœçãªãŠã§ããµã€ããšæ¥œãããŠã§ããµã€ããšã®éã®ã®ã£ãããåããŸãã
ã¹ã ãŒãºã¹ã¯ããŒã«ãç¹ã«æçãšãªãåŸãã以äžã®åœéçãªäŸãèããŠã¿ãŠãã ããïŒ
- eã³ããŒã¹ã®è£œåããŒãžïŒ è€æ°ã®è£œåããªãšãŒã·ã§ã³ã詳现ãªä»æ§ã玹ä»ããããŒãžã§ãå éšããã²ãŒã·ã§ã³ïŒäŸïŒã詳现ãèŠãããã¿ã³ããç¹å®ã®ã»ã¯ã·ã§ã³ãžïŒã®ããã®ã¹ã ãŒãºã¹ã¯ããŒã«ã¯ããã©ãŠãžã³ã°äœéšãåäžãããŸããæ±äº¬ã®ãŠãŒã¶ãŒãäžå¿«ãªããŒãžã®ãžã£ã³ããªãã«æ©èœãæ¯èŒããŠããæ§åãæ³åããŠã¿ãŠãã ããã
- ãã¥ãŒã¹ããŒã¿ã«ãšããã°ïŒ é·æã®èšäºããã¥ãŒã¹ãã£ãŒãã«ãããŠãã»ã¯ã·ã§ã³éãããã£ãšèªã¿èŸŒããã³ã³ãã³ããžã®ã¹ã ãŒãºã¹ã¯ããŒã«ã¯ãç¶ç¶çãªèªæžäœéšãæäŸããŸããããã¯ãã ã³ãã€ããµã³ããŠãã®ãããªè³ãããªéœåžã§å€åºäžã«ã³ã³ãã³ãã«ã¢ã¯ã»ã¹ãããããããªããŠãŒã¶ãŒã«ãšã£ãŠäŸ¡å€ããããŸãã
- ããŒããã©ãªãªãµã€ãïŒ ã¢ãŒãã£ã¹ãããã¶ã€ããŒã¯ããã°ãã°ã¢ã³ã«ãŒãªã³ã¯ã䜿çšããŠãããŒããã©ãªãªã®ç°ãªããããžã§ã¯ããã»ã¯ã·ã§ã³éãç§»åããŸããã¹ã ãŒãºã¹ã¯ããŒã«ã¯ã圌ãã®äœåãæŽç·Žããããšã¬ã¬ã³ããªæ¹æ³ã§æç€ºããäžçäžã®ã¯ãªãšã€ãã£ããªãããã§ãã·ã§ãã«ã«ã¢ããŒã«ããŸãã
- ããã¥ã¡ã³ããŒã·ã§ã³ãµã€ãïŒ æè¡ææžã¯ãã°ãã°åºç¯ã§ããç« ãAPIãªãã¡ã¬ã³ã¹ããŸãã¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¬ã€ãïŒãšãŒããããåç±³ã®äŒæ¥ã®ãµã€ãã§äžè¬çïŒéã®ã¹ã ãŒãºã¹ã¯ããŒã«ã¯ãæ å ±æ€çŽ¢ãã¯ããã«å®¹æã«ããŸãã
ãã€ãã£ãã¹ã ãŒãºã¹ã¯ããŒã«ãé¿ããã¹ãå Žå
äžè¬çã«æçã§ãããscroll-behavior: auto;
ãç¶æãããããããã现ãããªå¶åŸ¡ã®ããã«JavaScriptã䜿çšããããšãéžæããå ŽåããããŸãïŒ
- è€éãªã¹ã¯ããŒã«ããªã¬ãŒã¢ãã¡ãŒã·ã§ã³ïŒ ãŠã§ããµã€ããã¹ã¯ããŒã«ã€ãã³ãã«æ£ç¢ºã«ã¿ã€ãã³ã°ãåãããè€éãªJavaScriptã¢ãã¡ãŒã·ã§ã³ïŒäŸïŒãã¯ã»ã«ããŒãã§ã¯ããªå¶åŸ¡ãå¿
èŠãªãã©ã©ãã¯ã¹å¹æïŒã«å€§ããäŸåããŠããå Žåã
scroll-behavior: smooth;
åºæã®ã¢ãã¡ãŒã·ã§ã³ãå¹²æžããå¯èœæ§ããããŸãããã®ãããªå Žåãã¹ã¯ããŒã«ã®æåãJavaScriptã®ã¿ã§å¶åŸ¡ããæ¹ãäºæž¬å¯èœæ§ãé«ãŸããŸãã - ããã©ãŒãã³ã¹ãéèŠãªã¢ããªã±ãŒã·ã§ã³ïŒ ãã¹ãŠã®ããªç§ãéèŠã§ããããã€ãã£ãã¢ãã¡ãŒã·ã§ã³ã®ãªãŒããŒãããã§ããæžå¿µããããæ¥µããŠããã©ãŒãã³ã¹ã«ææãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãç¬éçãªã¹ã¯ããŒã«ãéžæããå¿ èŠããããããããŸãããããããã»ãšãã©ã®ãŠã§ãã³ã³ãã³ãã§ã¯ããã€ãã£ãã®ã¹ã ãŒãºã¹ã¯ããŒã«ã®ããã©ãŒãã³ã¹äžã®å©ç¹ããããäžåããŸãã
- ç¹å®ã®ãŠãŒã¶ãŒãããŒïŒ ç¹å®ã®é«åºŠã«å°éåããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã§ã¯ãæ©èœçãªçç±ãã峿ã®ã¹ã¯ããŒã«ãå¿ èŠã«ãªãå ŽåããããŸããéžæããæåãæå³ããã€ã³ã¿ã©ã¯ã·ã§ã³ãšäžèŽããŠããããšã確èªããããã«ãåžžã«ãŠãŒã¶ãŒãããŒããã¹ãããŠãã ããã
é«åºŠãªãã¯ããã¯ãšä»£æ¿æ¡
scroll-behavior: smooth;
ã¯ãã€ãã£ãã®ã¹ã ãŒãºã¹ã¯ããŒã«ã®æšæºçãªæ¹æ³ã§ãããããé«åºŠãªã·ããªãªããã倧ããªå¶åŸ¡ãå¿
èŠãªå Žåã«ä»ã®ã¢ãããŒãã«ã€ããŠãèšåãã䟡å€ããããŸãã
JavaScriptã©ã€ãã©ãª
è€éãªã¢ãã¡ãŒã·ã§ã³ãã«ã¹ã¿ã ã€ãŒãžã³ã°é¢æ°ããŸãã¯ã¹ã¯ããŒã«ã®æç¶æéãšãªãã»ããã®æ£ç¢ºãªå¶åŸ¡ã®ããã«ã¯ã以äžã®ãããªJavaScriptã©ã€ãã©ãªããããŸãïŒ
- GSAP (GreenSock Animation Platform)ïŒ ç¹ã«ãã®ScrollTriggerãã©ã°ã€ã³ã¯ãã¹ã¯ããŒã«é§åã®ã¢ãã¡ãŒã·ã§ã³ã«å¯ŸããŠæ¯é¡ã®ãªãå¶åŸ¡ãæäŸããŸãã
- ScrollReveal.jsïŒ ãã¥ãŒããŒãã«å ¥ã£ãèŠçŽ ã衚瀺ããããã®äººæ°ã®ããã©ã€ãã©ãªã§ãã
- jQuery Easing Plugins (ã¬ã¬ã·ãŒ)ïŒ æ°ãããããžã§ã¯ãã§ã¯ããŸãäžè¬çã§ã¯ãããŸããããå€ããµã€ãã§ã¯ã¹ã ãŒãºã¹ã¯ããŒã«ã®ããã«jQueryãšã€ãŒãžã³ã°ãã©ã°ã€ã³ã䜿çšãããŠããå ŽåããããŸãã
ãããã®ãœãªã¥ãŒã·ã§ã³ã¯ãã倧ããªæè»æ§ãæäŸããŸãããç¹ã«å€æ§ãªããã€ã¹ã䜿çšããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠã¯ãJavaScriptã®å®è¡ãªãŒããŒããããšæœåšçãªããã©ãŒãã³ã¹ã®èæ ®äºé ã䌎ããŸãã
CSS scroll-snap
scroll-behavior
ãšscroll-snap
ãæ··åããªãããšãéèŠã§ããã©ã¡ããã¹ã¯ããŒã«ã«é¢é£ããŠããŸãããç°ãªãç®çãæãããŸãïŒ
scroll-behavior
ïŒ ã¿ãŒã²ãããžã®ã¹ã¯ããŒã«ã®*ã¢ãã¡ãŒã·ã§ã³*ãå¶åŸ¡ããŸããscroll-snap
ïŒ ã¹ã¯ããŒã«å¯èœãªã³ã³ããã«æ²¿ã£ãŠãã¹ã¯ããŒã«ããŒããèŠçŽ ã«ãã¹ããããããç¹ãå®çŸ©ã§ããŸããããã¯ãåãããŒãžãããã¥ãŒã«ã¹ãããããã«ã«ãŒã»ã«ãããŒãžåå²ãããã³ã³ãã³ããäœæããã®ã«æé©ã§ãã
ãããã®ããããã£ãçµã¿åãããããšãã§ããŸããããšãã°ãscroll-snap-type
ãå®çŸ©ãããã¹ã¯ããŒã«å¯èœãªã³ã³ãããããããŠãŒã¶ãŒãæåã§ã¹ã¯ããŒã«ãããšã¹ãããããŸãããã®ã³ã³ããå
ã§ã¢ã³ã«ãŒãªã³ã¯ãã¹ã¯ããŒã«ãããªã¬ãŒããå Žåãscroll-behavior: smooth;
ãã¹ãããããã»ã¹ãã¢ãã¡ãŒã·ã§ã³åããŸãã
äŸ4: ã¹ã¯ããŒã«ããã€ãã¢ãšã¹ã¯ããŒã«ã¹ãããã®çµã¿åãã
.snap-container {
height: 400px;
overflow-y: scroll;
scroll-snap-type: y mandatory;
scroll-behavior: smooth;
}
.snap-item {
height: 100%;
scroll-snap-align: start;
}
ãã®äŸã§ã¯ãæåã§ã¹ã¯ããŒã«ãããšå.snap-item
ã®éå§äœçœ®ã«ã¹ãããããã¢ã³ã«ãŒãªã³ã¯ãå
éšã®ã¢ã€ãã ãã¿ãŒã²ããã«ããå Žåããã®éå§äœçœ®ãžã®ã¹ãããã¢ã¯ã·ã§ã³ãã¹ã ãŒãºã«ã¢ãã¡ãŒã·ã§ã³åãããŸãã
çµè«
CSSã®scroll-behavior
ããããã£ã¯ããŠã§ãããŒãžãã¹ã¯ããŒã«å¯èœãªã³ã³ããã«ã¹ã ãŒãºã¹ã¯ããŒã«ãå°å
¥ããããšã§ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããã匷åãªãã€ãã£ãããŒã«ã§ãããã®ã·ã³ãã«ããåºç¯ãªãã©ãŠã¶ãµããŒããããã³ããã©ãŒãã³ã¹äžã®å©ç¹ã«ãããçŸä»£ã®Webéçºè
ã®ããŒã«ãããã«ãããŠäžå¯æ¬ ãªè³ç£ãšãªã£ãŠããŸãã
scroll-behavior: smooth;
ãææ
®æ·±ãé©çšããprefers-reduced-motion
ã¡ãã£ã¢ã¯ãšãªãéããŠãŠãŒã¶ãŒã®å¥œã¿ãå°éããããšã§ãããé
åçã§ãã¢ã¯ã»ã¹ãããããæŽç·Žãããã€ã³ã¿ãŒãã§ãŒã¹ãäœæããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«é¿ãããããšãã§ããŸããåœéçãªeã³ããŒã¹ãã©ãããã©ãŒã ãã³ã³ãã³ãè±å¯ãªãã¥ãŒã¹ãµã€ãããŸãã¯ãšã¬ã¬ã³ããªããŒããã©ãªãªãæ§ç¯ããŠããå Žåã§ãããã€ãã£ãã®ã¹ã ãŒãºã¹ã¯ããŒã«ã¯ããã¹ãŠã®äººã«ãšã£ãŠããè¯ããŠã§ãã«åããå°ãããéèŠãªäžæ©ã§ãã
æµåæ§ãåãå ¥ãããŠãŒã¶ãŒãåã°ããé²åãç¶ããCSSã®å¯èœæ§ãæ¢æ±ãç¶ããŠãã ããïŒ