CSSã¹ã¯ããŒã«æåç©çãšã³ãžã³ãæ¢æ±ãããªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ã§Web UXãåäžãããæ¹æ³ããã°ããŒãã«ãªWebéçºã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠè§£èª¬ããŸãã
ãªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ãè§£ãæŸã€ïŒCSSã¹ã¯ããŒã«æåç©çãšã³ãžã³
åºå€§ã§é²åãç¶ããWebéçºã®äžçã«ãããŠããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒã¯è³äžã®ãã®ã§ããã©ããªã«äºçްãªã€ã³ã¿ã©ã¯ã·ã§ã³ã§ãã£ãŠãããŠãŒã¶ãŒã®ãŠã§ããµã€ãã®å質ãå¿çæ§ã«å¯Ÿããèªèã«è²¢ç®ããŸãããããã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã®äžã§ããã¹ã¯ããŒã«ã¯åºæ¬çãã€æ®éçãªã¢ã¯ã·ã§ã³ãšããŠéç«ã£ãŠããŸããäœå幎ãã®éãã¹ã¯ããŒã«ã¯çŽç²ã«æ©æ¢°çãªãã®ã§ãããããŠã¹ãã€ãŒã«ã®ã¯ãªãã¯ããšã«æ±ºãŸã£ããã¯ã»ã«æ°ãç§»åããã¿ãããžã§ã¹ãã£ãŒã§ã¯çŽç·çã«æ»ãã ãã§ãããæ©èœçã§ã¯ãããã®ã®ãçŸä»£ã®ããžã¿ã«ã€ã³ã¿ãŒãã§ãŒã¹ã«æåŸ ããããããªææ©çã§èªç¶ãªæè§Šã«æ¬ ããŠããããšããããããŸããã
ããã§ç»å Žããã®ãCSSã¹ã¯ããŒã«æåç©çãšã³ãžã³ãšããæŠå¿µã§ããããã¯ããŠã§ãã®ã¹ã¯ããŒã«ã«ãªã¢ã«ãªç©çæ³åãæ³šå ¥ãããšãããã©ãã€ã ã·ããã§ããããã¯åãªãã¹ã ãŒãºã¹ã¯ããŒã«ã§ã¯ãããŸãããæ £æ§ãæ©æŠã匟æ§ãšãã£ãçŸå®äžçã®ç©ççç¹æ§ãã·ãã¥ã¬ãŒãããé åçã§çŽæçããããŠçã«ãã€ãããã¯ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåµãåºãããšã§ããã¹ã¯ããŒã«ãçªç¶æ¢ãŸãã®ã§ã¯ãªããç·©ããã«æžéããæ§åããã³ã³ãã³ãã®ç«¯ã«å°éãããšãã«æºè¶³æã®ãã埮ããªããŠã³ã¹ãæ³åããŠã¿ãŠãã ããããããã¯ãåªãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãçã«å倧ãªãã®ãžãšæè¯ããããã¥ã¢ã³ã¹ãªã®ã§ãã
ãã®å æ¬çãªã¬ã€ãã§ã¯ããªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ã®è€éãªäžçãæãäžããŠãããŸããã¹ã¯ããŒã«ç©çåŠãšã¯äœãããªããããçŸä»£ã®Webã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ã«ãªãã€ã€ããã®ããå©çšå¯èœãªããŒã«ãšãã¯ããã¯ïŒãã€ãã£ãCSSãšJavaScripté§åã®äž¡æ¹ïŒããããŠãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®ããã«ããã©ãŒãã³ã¹ãšã¢ã¯ã»ã·ããªãã£ãç¶æããªããããããã®æŽç·Žãããã€ã³ã¿ã©ã¯ã·ã§ã³ãå®è£ ããããã®éèŠãªèæ ®äºé ã«ã€ããŠæ¢æ±ããŸãã
ã¹ã¯ããŒã«ç©çåŠãšã¯äœãããããŠãªãéèŠãªã®ãïŒ
ãã®æ žå¿ã«ãããŠãã¹ã¯ããŒã«ç©çåŠãšã¯ãããžã¿ã«ã³ã³ãã³ããã¹ã¯ããŒã«ããè¡çºã«çŸå®äžçã®ç©çæ³åãé©çšããããšãæããŸããçŽç²ã«ããã°ã©ã çãªç·åœ¢ç§»åã®ä»£ããã«ãã¹ã¯ããŒã«ç©çåŠã¯æ¬¡ã®ãããªæŠå¿µãå°å ¥ããŸãïŒ
- æ £æ§ïŒãŠãŒã¶ãŒãã¹ã¯ããŒã«ã忢ããŠããã³ã³ãã³ãã¯å³åº§ã«åæ¢ããã®ã§ã¯ãªããçæéåãç¶ããåŸã ã«æžéããŸããããã¯ç©çäžçã«ãããç©äœã®éåéã«ãã䌌ãŠããŸãã
- æ©æŠïŒãã®åã¯åãã«éãã£ãŠäœçšããã¹ã¯ããŒã«ããŠããã³ã³ãã³ããæžéãããæçµçã«åæ¢ãããŸããæ©æŠã®éã調æŽããããšã§ãã¹ã¯ããŒã«ã®æè§Šããéãããããã軜ãããããã§ããŸãã
- 匟æ§/ã¹ããªã³ã°ïŒãŠãŒã¶ãŒãã³ã³ãã³ãã®å§ç¹ãçµç¹ãè¶ ããŠã¹ã¯ããŒã«ããããšãããšãã³ã³ãã³ãã¯åºã忢ãã代ããã«ããããã«ããªãŒããŒã·ã¥ãŒããããŠããå ã®äœçœ®ã«è·³ãè¿ããŸãããã®èŠèŠçãªãã£ãŒãããã¯ã¯ãã¹ã¯ããŒã«å¯èœãªé åã®å¢çããšã¬ã¬ã³ãã«ç€ºããŸãã
- é床ïŒãŠãŒã¶ãŒãã¹ã¯ããŒã«ãéå§ããéãããæ £æ§ã¹ã¯ããŒã«ã®è·é¢ãšæç¶æéã«çŽæ¥åœ±é¿ããŸããéãããªãã¯æäœã¯ãããé·ããããé¡èãªã¹ã¯ããŒã«ããããããŸãã
ãªããã®ã¬ãã«ã®è©³çްãéèŠãªã®ã§ããããïŒããã¯ãç§ãã¡ã®è³ãç©ççãªæåãçè§£ãäºæž¬ããããã«ã§ããŠããããã§ããããžã¿ã«ã€ã³ã¿ãŒãã§ãŒã¹ããããã®æåãæš¡å£ãããšãããçŽæçã§äºæž¬å¯èœã«ãªããæçµçã«ã¯æäœãããæ¥œãããªããŸããããã¯ãé«ç²ŸåºŠã®ããŠã¹ãããã«ãã¿ãããã©ãã¯ããããã¹ããŒããã©ã³ã®æãŸã§ã倿§ãªãŠãŒã¶ãŒã°ã«ãŒããããã€ã¹ã«ããã£ãŠãããæµåçã§é åçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«çŽæ¥ã€ãªãããèªç¥è² è·ã軜æžããæºè¶³åºŠãé«ããŸãã
Webã¹ã¯ããŒã«ã®é²åïŒéçããåçãž
Webã¹ã¯ããŒã«ã®éã®ãã¯ãã€ã³ã¿ãŒãããèªäœã®åºç¯ãªé²åãã€ãŸãéçãªããã¥ã¡ã³ããããªããã§ã€ã³ã¿ã©ã¯ãã£ããªã¢ããªã±ãŒã·ã§ã³ãžã®é²åãåæ ããŠããŸããåœåãã¹ã¯ããŒã«ã¯äž»ã«ã¹ã¯ããŒã«ããŒã«ãã£ãŠé§åãããåºæ¬çãªãã©ãŠã¶æ©èœã§ããããŠãŒã¶ãŒã®å ¥åã¯ããã¥ã¢ã³ã¹ã®ããæåãªãã«ãçŽæ¥ãã¯ã»ã«ã®ç§»åã«å€æãããŠããŸããã
åæïŒåºæ¬çãªã¹ã¯ããŒã«ããŒãšæåå¶åŸ¡
Webã®åæã«ãããŠãã¹ã¯ããŒã«ã¯å®çšæ¬äœã§ããããã¥ãŒããŒããè¶ ããã³ã³ãã³ãã¯åã«ã¹ã¯ããŒã«ããŒã衚瀺ãããŠãŒã¶ãŒã¯ãããæåã§ãã©ãã°ããããç¢å°ããŒã䜿çšãããããŠããŸããããæ»ããããããç©çæ³åããšããæŠå¿µã¯ãããŸããã§ããã
JavaScriptã®å°é ïŒã«ã¹ã¿ã ã¹ã¯ããŒã«äœéš
Webæè¡ãæçããã«ã€ããŠãéçºè ãã¡ã¯JavaScriptã䜿çšããŠãã€ãã£ãã®ãã©ãŠã¶ã¹ã¯ããŒã«ãäžæžãããå®éšãå§ããŸãããããã°ã©ã ã«ããå¶åŸ¡ãæäŸããã©ã€ãã©ãªãç»å Žãããã©ã©ãã¯ã¹ã¹ã¯ããŒã«ãã«ã¹ã¿ã ã¹ã¯ããŒã«ã€ã³ãžã±ãŒã¿ãŒãåæ©çãªã¹ã ãŒãºã¹ã¯ããŒã«ãªã©ã®ãšãã§ã¯ããå¯èœã«ããŸãããåœæã¯é©æ°çã§ãããããããã¯ãã°ãã°è€éãªDOMæäœã䌎ããå®å šã«æé©åãããŠããªãå Žåã¯äžèªç¶ã«æããããããã«ã¯ã«ã¯ãããããããšããããŸããã
ãã€ãã£ãã¹ã ãŒãºã¹ã¯ããŒã«ïŒããè¯ãUXãžã®äžæ©
æ¹åãããã¹ã¯ããŒã«äœéšãžã®éèŠã®é«ãŸããèªèãããã©ãŠã¶ã¯ãã€ãã£ãã®ã¹ã ãŒãºã¹ã¯ããŒã«ãµããŒããå°å
¥ããŸãããããã¯å€ãã®å Žåãscroll-behavior: smooth;
ã®ãããªåçŽãªCSSããããã£ã§æå¹åã§ããŸããããã«ãããããã°ã©ã ã«ããã¹ã¯ããŒã«ïŒäŸïŒã¢ã³ã«ãŒãªã³ã¯ã®ã¯ãªãã¯ïŒã«å¯ŸããŠãã©ãŠã¶ãæé©åããã¢ãã¡ãŒã·ã§ã³ãæäŸãããŸãããããããããã¯äž»ã«ã¹ã¯ããŒã«ã®ç®çå°ã®ã¢ãã¡ãŒã·ã§ã³ã«å¯Ÿå¿ãããã®ã§ããããŠãŒã¶ãŒãéå§ããã¹ã¯ããŒã«ã®ãã€ããã¯ã¹ïŒããªãã¯ãžã§ã¹ãã£ãŒåŸã®æ
£æ§ãªã©ïŒã«ã¯å¯Ÿå¿ããŠããŸããã§ããã
çŸä»£ïŒç©çããŒã¹ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãžã®èŠæ±
ã¿ããããã€ã¹ãé«ãªãã¬ãã·ã¥ã¬ãŒããã£ã¹ãã¬ã€ã匷åãªããã»ããµã®æ®åã«äŒŽãããŠãŒã¶ãŒã®æåŸ ã¯æ¥äžæããŠããŸãããŠãŒã¶ãŒã¯ä»ããã¹ããŒããã©ã³ãã¿ãã¬ããã§ãé«åºŠã«æŽç·Žãããç©çããŒã¹ã®ã¹ã¯ããŒã«ãåããã¢ããªãæäœããŠããŸãã圌ããWebã¢ããªã±ãŒã·ã§ã³ã«ç§»è¡ãããšããåæ§ã®ã¬ãã«ã®æŽç·Žããšå¿çæ§ãæåŸ ããŸãããã®æåŸ ããWebéçºã³ãã¥ããã£ããCSSãšJavaScriptã®äž¡æ¹ã®é·æã掻çšããŠããããã®ãªããã§ãªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ããã©ãŠã¶ã«çŽæ¥ããããæ¹æ³ãæ¢æ±ããæ¹åãžãšé§ãç«ãŠãŠããŸãã
ã¹ã¯ããŒã«ç©çãšã³ãžã³ã®åºæ¬åå
ãªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ãã©ã®ããã«å®çŸãããããçã«çè§£ããããã«ã¯ãããããæ¯ããåºæ¬çãªç©çååãææ¡ããããšãäžå¯æ¬ ã§ãããããã¯åãªãæœè±¡çãªæŠå¿µã§ã¯ãªãããŠãŒã¶ãŒå ¥åã«å¿ããŠèŠçŽ ãã©ã®ããã«åããåå¿ããããæ±ºå®ããæ°åŠã¢ãã«ã§ãã
1. æ £æ§ïŒéåãç¶æããããšããåŸå
ç©çåŠã«ãããŠãæ £æ§ãšã¯ãéåºŠãæ¹åããŸãã¯éæ¢ç¶æ ã®å€åãå«ããéåç¶æ ã®ããããå€åã«å¯Ÿããç©ççãªç©äœã®æµæã§ããã¹ã¯ããŒã«ç©çåŠã§ã¯ãããã¯ãŠãŒã¶ãŒãæãé¢ããããããŠã¹ãã€ãŒã«ã匟ãã®ããããåŸãã³ã³ãã³ããäžå®æéã¹ã¯ããŒã«ãç¶ããããšã«çžåœããŸãããŠãŒã¶ãŒã®å ¥åã®åæé床ãããã®æ £æ§ã¹ã¯ããŒã«ã®å€§ãããæ±ºå®ããŸãã
2. æ©æŠïŒéåã«æµæããå
æ©æŠãšã¯ãåºäœè¡šé¢ãæµäœå±€ãããã³äºãã«æ»ãåãç©è³ªèŠçŽ ã®çžå¯Ÿçãªåãã«æµæããåã§ããã¹ã¯ããŒã«ãšã³ãžã³ã§ã¯ãæ©æŠã¯æžéåãšããŠäœçšããæ £æ§ã¹ã¯ããŒã«ãåŸã ã«åæ¢ãããŸããæ©æŠå€ãé«ããšã³ã³ãã³ãã¯æ©ã忢ããäœãå€ã ãšããé·ãæ»ããã«æ»ããŸãããã®ãã©ã¡ãŒã¿ã¯ãã¹ã¯ããŒã«ã®ãæè§Šãã調æŽããäžã§éåžžã«éèŠã§ãã
3. ã¹ããªã³ã°ãšåŒŸæ§ïŒå¢çããã®ããŠã³ã¹
ã¹ããªã³ã°ã¯ãæ©æ¢°çãšãã«ã®ãŒãèãã匟æ§ã®ããç©äœã§ããå§çž®ãããã䌞ã°ãããããããšããã®å€äœã«æ¯äŸããåãåãŒããŸããã¹ã¯ããŒã«ãã€ããã¯ã¹ã§ã¯ãã¹ããªã³ã°ã¯ãŠãŒã¶ãŒãã³ã³ãã³ãã®å¢çãè¶ ããŠã¹ã¯ããŒã«ããããšãããšãã®ãããŠã³ã¹ã广ãã·ãã¥ã¬ãŒãããŸããã³ã³ãã³ãã¯éçããããã«è¶ ããŠäŒžã³ããããŠãã¹ããªã³ã°ãããããå ã®äœçœ®ã«åŒãæ»ããŸãããã®å¹æã¯ããŠãŒã¶ãŒãã¹ã¯ããŒã«å¯èœãªé åã®ç«¯ã«éããããšããæ¥ã§åçªãªåæ¢ãªãã«æç¢ºãªèŠèŠçãã£ãŒãããã¯ã§æäŸããŸãã
ã¹ããªã³ã°ã®äž»èŠãªç¹æ§ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- åæ§ïŒã¹ããªã³ã°ãå€åœ¢ã«å¯ŸããŠã©ãã ãæµæããããåæ§ã®é«ãã¹ããªã³ã°ã¯ããéãè·³ãè¿ããŸãã
- æžè¡°ïŒã¹ããªã³ã°ã®æ¯åãã©ãã ãéãæ¶æ£ããããé«ãæžè¡°ã¯ããŠã³ã¹ãå°ãªããäœãæžè¡°ã¯åãŸãåã«ããå€ãã®æ¯åãæå³ããŸãã
4. é床ïŒéåã®éããšæ¹å
é床ã¯ãç©äœã®äœçœ®ã®å€åã®éããšæ¹åãæž¬å®ããŸããã¹ã¯ããŒã«ç©çåŠã«ãããŠããŠãŒã¶ãŒã®åæã¹ã¯ããŒã«ãžã§ã¹ãã£ãŒã®é床ãæããããšã¯æãéèŠã§ãããã®é床ãã¯ãã«ïŒéããšæ¹åã®äž¡æ¹ïŒã¯ãæ £æ§ã¹ã¯ããŒã«ãåæåããããã«äœ¿çšãããæ©æŠãããã忢ããããŸã§ã«ã³ã³ãã³ããã©ãã ãé ããéãåãç¶ãããã«åœ±é¿ãäžããŸãã
5. æžè¡°ïŒæ¯åãé®ãã
ã¹ããªã³ã°ã«é¢é£ããŠããŸãããæžè¡°ã¯ç¹ã«æ¯åãæºãã®æžè¡°ãæããŸããã³ã³ãã³ããïŒåŒŸæ§ã®ããã«ïŒå¢çããè·³ãè¿ããšããæžè¡°ã¯ãããã®æ¯åãç¡éã«ç¶ããªãããã«ããŸããããã¯æåã®ããŠã³ã¹ã®åŸãã³ã³ãã³ããæ»ãããã€å¹ççã«éæ¢ãããäžèªç¶ã§çµããã®ãªãæºããé²ããŸããé©åãªæžè¡°ã¯ãæŽç·Žããããããã§ãã·ã§ãã«ãªæè§Šã®ããã«äžå¯æ¬ ã§ãã
ãããã®ç©ççç¹æ§ãç¶¿å¯ã«çµã¿åããã調æŽããããšã§ãéçºè ã¯å ¥åããã€ã¹ãç»é¢ãµã€ãºã«é¢ä¿ãªããä¿¡ããããªãã»ã©èªç¶ã§ãå¿çæ§ãé«ããè§ŠèŠçãªã¹ã¯ããŒã«äœéšãäœãåºãããšãã§ããŸãã
ãªããªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ãå®è£ ããã®ãïŒãã®å ·äœçãªå©ç¹
ç©çé§åã®ã¹ã¯ããŒã«ãšã³ãžã³ãå®è£ ããåŽåã¯ããŠãŒã¶ãŒã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãšWebã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªèªèã®äž¡æ¹ãå€§å¹ ã«åäžããããå€ãã®èª¬åŸåã®ããå©ç¹ã«ãã£ãŠæ£åœåãããŸãã
1. ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒãšãšã³ã²ãŒãžã¡ã³ãã®åäž
æãçŽæ¥çã§æ·±é ãªå©ç¹ã¯ãåçã«æ¹åãããUXã§ããç©çããŒã¹ã®ã¹ã¯ããŒã«ã¯çŽæçã§æºè¶³æããããŸãã埮现ãªé§ãåŒããç©ãããªæžéã匟æ§ã®ããããŠã³ã¹ã¯ãåŸæ¥ã®ã¹ã¯ããŒã«ã«ã¯ãªãå¶åŸ¡æãšå¿çæ§ãçã¿åºããŸããããã¯ãŠãŒã¶ãŒæºè¶³åºŠã®åäžããšã³ã²ãŒãžã¡ã³ãæéã®å»¶é·ããããŠããå¿«é©ãªãã©ãŠãžã³ã°äœéšã«ã€ãªãããŸãã
2. ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒã®èªèåäžïŒãã¬ãã¢ã ãªæè§Š
ãªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ãåãå ¥ããã¢ããªã±ãŒã·ã§ã³ã¯ãããæŽç·Žãããã¢ãã³ã§ãããã¬ãã¢ã ãã«æããããããšããããããŸãããã®åŸ®çŽ°ãªæŽç·Žãã¯ã補åãç«¶åä»ç€Ÿãšå·®å¥åãã现éšãžã®æ³šæãšé«å質ãªãã¶ã€ã³ãžã®ã³ãããã¡ã³ãã瀺ãããšãã§ããŸããããã¯ã€ã³ã¿ãŒãã§ãŒã¹å šäœã®çŸçããã³æ©èœçãªé åãé«ããŸãã
3. ããã€ã¹éã®æŽåæ§ãšäºæž¬å¯èœæ§
ã¹ããŒããã©ã³ãã¿ãã¬ããããã©ãã¯ãããä»ãã©ããããããããŠã¹ä»ããã¹ã¯ããããªã©ã倿§ãªããã€ã¹ã®æä»£ã«ãããŠãäžè²«ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãç¶æããããšã¯å°é£ã§ããç©çããŒã¹ã®ã¹ã¯ããŒã«ã¯ããã®ã®ã£ãããåããã®ã«åœ¹ç«ã¡ãŸããå ¥åã¡ã«ããºã ã¯ç°ãªããŸãããåºç€ãšãªãç©çã¢ãã«ã¯ããŠãŒã¶ãŒãã¿ããã¹ã¯ãªãŒã³ã§ããªãã¯ããŠãããããã©ãã¯ãããã§ã¹ã¯ã€ãããŠãããã«é¢ããããã¹ã¯ããŒã«ã®*æè§Š*ãäºæž¬å¯èœã§äžè²«ããŠããããšãä¿èšŒã§ããŸãããã®äºæž¬å¯èœæ§ã¯åŠç¿æ²ç·ãæžããããã©ãããã©ãŒã å šäœã§ãŠãŒã¶ãŒã®ä¿¡é Œãç¯ããŸãã
4. æç¢ºãªãã£ãŒãããã¯ãšã¢ãã©ãŒãã³ã¹
ã³ã³ãã³ãã®å¢çã§ã®åŒŸæ§ããŠã³ã¹ã¯ããŠãŒã¶ãŒã端ã«å°éããããšã瀺ãæç¢ºã§éªéã«ãªããªããã£ãŒãããã¯ãšããŠæ©èœããŸãããã®èŠèŠçãªã¢ãã©ãŒãã³ã¹ã¯ãåçªãªåæ¢ãéçãªã¹ã¯ããŒã«ããŒã®åºçŸãããã¯ããã«ãšã¬ã¬ã³ãã§ããæ £æ§ã¹ã¯ããŒã«ã¯ãŸãããŠãŒã¶ãŒã®å ¥åã®åŒ·ãã«é¢ãããã£ãŒãããã¯ãæäŸããã€ã³ã¿ã©ã¯ã·ã§ã³ãããçŽæ¥çã§åŒ·åã«æããããŸãã
5. ã¢ãã³ãªãã©ã³ãã¢ã€ãã³ãã£ãã£ãšã€ãããŒã·ã§ã³
ç©çé§åã¹ã¯ããŒã«ã®ãããªé«åºŠãªã€ã³ã¿ã©ã¯ã·ã§ã³ã¢ãã«ãæ¡çšããããšã¯ããã©ã³ãã®ã€ã¡ãŒãžã驿°çã§ãæè¡çã«å é²çã§ããŠãŒã¶ãŒäžå¿ã§ãããšåŒ·åããããšãã§ããŸããããã¯ãã°ããŒãã«ã§ãã¯ãããžãŒã«ç²ŸéãããªãŒãã£ãšã³ã¹ã«å ±é³Žãããæå 端ã®ããžã¿ã«äœéšãæäŸãããšããã³ãããã¡ã³ãã瀺ããŸãã
6. ææ çãªã€ãªãã
æœè±¡çã«èŠãããããããŸããããã¹ã¯ããŒã«ç©çåŠãå«ããããŸãå®è¡ããããã€ã¯ãã€ã³ã¿ã©ã¯ã·ã§ã³ã¯ãããžãã£ããªææ ãåŒã³èµ·ããããšãã§ããŸããå®ç§ã«éã¿ä»ããããã¹ã¯ããŒã«ãæºè¶³ã®ããããŠã³ã¹ã®åŸ®çްãªåã³ã¯ã補åãšã®ããæ·±ããããææ çãªã€ãªãããè²ã¿ããã€ã€ã«ãã£ãšè¯å®çãªå£ã³ãã«è²¢ç®ããŸãã
çŸç¶ïŒCSSã®èœåãšJavaScriptã©ã€ãã©ãª
ãCSSã¹ã¯ããŒã«æåç©çãšã³ãžã³ããšããèšèã¯ãçŽç²ã«CSSé§åã®ãœãªã¥ãŒã·ã§ã³ã瀺åãããããããŸããããçŸå®ã¯ãã€ãã£ãã®ãã©ãŠã¶æ©èœãšåŒ·åãªJavaScriptã©ã€ãã©ãªã®éã®åŸ®åŠãªçžäºäœçšã§ããçŸä»£ã®Webéçºã§ã¯ãæãŸããã¬ãã«ã®ãªã¢ãªãºã ãšå¶åŸ¡ãéæããããã«ããã°ãã°äž¡æ¹ã掻çšããŸãã
ãã€ãã£ãCSSã®èœåïŒåºç€
scroll-behavior: smooth;
ãã®CSSããããã£ã¯ã*ããã°ã©ã ã«ãã*ã¹ã¯ããŒã«ã«å¯ŸããŠããæ»ãããªäœéšãå°å
¥ããæãçŽæ¥çãªãã€ãã£ããªæ¹æ³ã§ããã¢ã³ã«ãŒãªã³ã¯ãã¯ãªãã¯ãããããJavaScriptãelement.scrollIntoView({ behavior: 'smooth' })
ãåŒã³åºããããããšããã©ãŠã¶ã¯å³åº§ã«ãžã£ã³ããã代ããã«ãçæéã§ã¹ã¯ããŒã«ãã¢ãã¡ãŒã·ã§ã³åããŸãã䟡å€ã¯ãããŸããããŠãŒã¶ãŒãéå§ããã¹ã¯ããŒã«ïŒäŸïŒããŠã¹ãã€ãŒã«ããã©ãã¯ããããžã§ã¹ãã£ãŒïŒã«å¯ŸããŠæ
£æ§ã匟æ§ã®ãããªç©çæ³åãå°å
¥ãããã®ã§ã¯ãããŸããã
scroll-snap
ããããã£
CSSã¹ã¯ããŒã«ã¹ãããã¯ãã¹ã¯ããŒã«ã³ã³ããã«å¯ŸããŠåŒ·åãªå¶åŸ¡ãæäŸããã¹ã¯ããŒã«ãžã§ã¹ãã£ãŒã®åŸã«ç¹å®ã®ãã€ã³ããèŠçŽ ã«ãã¹ãããããããããšãã§ããŸããããã¯ã«ã«ãŒã»ã«ãã®ã£ã©ãªãŒããŸãã¯ãã«ããŒãžã»ã¯ã·ã§ã³ã®ã¹ã¯ããŒã«ã«éåžžã«äŸ¿å©ã§ããããã¯ã¹ã¯ããŒã«ã®*æçµçãªéæ¢äœçœ®*ã«åœ±é¿ãäžãããã©ãŠã¶ã¯ãã°ãã°ã¹ããããã€ã³ããžã®æ»ãããªãã©ã³ãžã·ã§ã³ãå®è£ ããŸãããããã§ãå®å šãªç©çãšã³ãžã³ã§ã¯ãããŸãããã¹ã¯ããŒã«äžã§ã¯ãªããã¹ã¯ããŒã«ã®çµäºæã®æåãå®çŸ©ããŸãã
scroll-snap-type: x mandatory;
scroll-snap-align: start;
scroll-margin: 20px;
ãããã®ããããã£ã¯ãç¹å®ã®ç®çå°ãžã®å¶åŸ¡ãããäºæž¬å¯èœãªã¹ã¯ããŒã«ãå¯èœã«ããŸããããã¯åªããUXåäžã§ãããã¢ã¯ãã£ããªã¹ã¯ããŒã«äžã®æ £æ§ã匟æ§ã®ãããªç¶ç¶çãªç©çé§åã®æè§Šã¯æäŸããŸããã
ã®ã£ããïŒãã€ãã£ãCSSã®éçãšç©çåŠã®å§ãŸã
çŸåšã®ãã€ãã£ãCSSããããã£ã¯ãã¹ã¯ããŒã«ã®*ç®çå°*ãš*ããã°ã©ã ã«ããæ»ããã*ã«å¯ŸããŠåªããå¶åŸ¡ãæäŸããŸããããããæ £æ§ãæ©æŠã匟æ§ãšãã£ãç¶ç¶çãªç©ççãªåãã宣èšçãªæ¹æ³ã§ãŠãŒã¶ãŒãéå§ããã¹ã¯ããŒã«ã€ãã³ãã«çŽæ¥ã¢ãã«åããŠé©çšããèœåã«æ¬ ããŠããŸããç©çãšã³ãžã³ãã·ãã¥ã¬ãŒãããçã«ãªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ãå®çŸããããã«ãéçºè ã¯çŸåšJavaScriptã«ç®ãåããŠããŸãã
JavaScriptã©ã€ãã©ãªïŒç©çåŠã®ã®ã£ãããåãã
JavaScriptã©ã€ãã©ãªã¯ãæŽç·Žãããã¹ã¯ããŒã«ç©çåŠãå®è£ ããæåç·ã«ãããŸãããããã¯ã¹ã¯ããŒã«ã€ãã³ãããªãã¹ã³ããé床ãèšç®ããç©çã¢ãã«ãé©çšãããããŠæãŸãã广ãçã¿åºãããã«ããã°ã©ã çã«ã¹ã¯ããŒã«äœçœ®ãèŠçŽ ã®transformããããã£ãæŽæ°ããŸãã
1. Framer Motion (React) / Popmotion
Framer Motionã¯ãReactçšã®ãããã¯ã·ã§ã³ã¬ãã£ãªã¢ãŒã·ã§ã³ã©ã€ãã©ãªã§ãããåºç€ãšãªãPopmotionãšã³ãžã³ã掻çšããŠããŸããã¹ããªã³ã°ããŒã¹ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãå«ããç©çããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã«åªããŠããŸããã¹ã¯ããŒã«å°çšã§ã¯ãããŸããããæ £æ§ã®ããã匟ããããªåããäœæãããã®èœåã¯ãã¹ã¯ããŒã«ã³ã³ããã«é©å¿ãããããšãã§ããŸããéçºè ã¯ã¹ã¯ããŒã«ã€ãã³ããæ€åºããé床ãèšç®ããFramer Motionã®ç©çã¢ãã«ã䜿çšããŠèŠçŽ ãã¢ãã¡ãŒã·ã§ã³åããã¹ã¯ããŒã«ã®æåãæš¡å£ããããšãã§ããŸãã
æŠå¿µäŸïŒãŠãŒã¶ãŒã®ã¹ã¯ããŒã«é床ã«åºã¥ããŠ`y`äœçœ®ãã¢ãã¡ãŒã·ã§ã³åããããã«`useSpring`ããã¯ã䜿çšããããã«æ©æŠãå ããã«ã¹ã¿ã ã¹ã¯ããŒã«ã³ã³ããŒãã³ãã
2. React Spring
Framer Motionãšåæ§ã«ãReact Springã¯ãReactã¢ããªã±ãŒã·ã§ã³åãã®åŒ·åã§ããã©ãŒãã³ã¹ç¬¬äžã®ã¹ããªã³ã°ç©çããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã©ã€ãã©ãªã§ããéçºè ã¯ç©çæ³åã§ã»ãŒäœã§ãã¢ãã¡ãŒã·ã§ã³åã§ããŸãããã®`useSpring`ããã³`useTransition`ããã¯ã¯ãæµåçã§èªç¶ãªæè§Šã®åããäœæããã®ã«çæ³çã§ããReact Springãã¹ã¯ããŒã«ã€ãã³ããšçµ±åããããšã¯ã`wheel`ãŸãã¯`touchmove`ã€ãã³ãããªãã¹ã³ãããã«ã¿ãèšç®ãããããã¹ããªã³ã°ã¢ãã¡ãŒã·ã§ã³ã«é§åããŠã³ã³ãã³ãã®äœçœ®ãæŽæ°ããããšãæå³ããŸãã
æŠå¿µäŸïŒãã€ãŒã«ã€ãã³ããã`deltaY`ããã£ããã£ãããããã¹ããªã³ã°å€ã«é©çšãããã®ã¹ããªã³ã°å€ã«ãã£ãŠå€æãããã³ã³ãã³ããã¬ã³ããªã³ã°ããããšã§ã匟æ§ã®ããå¢çãä¿èšŒãã`ScrollView`ã³ã³ããŒãã³ãã
3. GreenSock (GSAP) ãš ScrollTrigger
GSAPã¯ããã®å ç¢æ§ãšããã©ãŒãã³ã¹ã§ç¥ããããããã§ãã·ã§ãã«ã°ã¬ãŒãã®ã¢ãã¡ãŒã·ã§ã³ã©ã€ãã©ãªã§ããScrollTriggerã¯äž»ã«ã¹ã¯ããŒã«ããŒã¹ã®*ã¢ãã¡ãŒã·ã§ã³*ïŒäŸïŒèŠçŽ ããã¥ãŒããŒãã«å ¥ããšãã«ã¢ãã¡ãŒã·ã§ã³åããïŒã«äœ¿çšãããŸãããGSAPã®ã³ã¢ã¢ãã¡ãŒã·ã§ã³ãšã³ãžã³ã¯ç¢ºãã«ã«ã¹ã¿ã ç©çã·ãã¥ã¬ãŒã·ã§ã³ãæ§ç¯ããããã«äœ¿çšã§ããŸããéçºè ã¯GSAPã®åŒ·åãªã¿ã€ã ã©ã€ã³ãšãã¥ã€ãŒã³æ©èœãå©çšããŠãç©çæ³åãæš¡å£ããã«ã¹ã¿ã ã€ãŒãžã³ã°ã«ãŒãã§ã¹ã¯ããŒã«äœçœ®ãèŠçŽ ã®ãã©ã³ã¹ãã©ãŒã ãã¢ãã¡ãŒã·ã§ã³åããããããè€éãªã·ããªãªã§ã¯Oimo.jsãcannon.jsã®ãããªç©çãšã³ãžã³ãšçµ±åãããããããšãã§ããŸãããããã¯åºæ¬çãªã¹ã¯ããŒã«ç©çåŠã«ã¯éå°ã§ããããšãå€ãã§ãã
4. ããã©JavaScriptã«ããã«ã¹ã¿ã å®è£
æå€§éã®å¶åŸ¡ãæ±ããããŸãã¯äººæ°ã®ãããã¬ãŒã ã¯ãŒã¯ã®å€ã§äœæ¥ãã人ã ã«ãšã£ãŠãããã©JavaScriptã¯ã¹ã¯ããŒã«ç©çãšã³ãžã³ããŒãããæ§ç¯ããæè»æ§ãæäŸããŸããããã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- `wheel`ã`touchstart`ã`touchmove`ã`touchend`ã€ãã³ãããªãã¹ã³ããã
- ã¹ã¯ããŒã«é床ãèšç®ããïŒæéã«å¯Ÿããäœçœ®ã®å€åïŒã
- ç©çæ¹çšåŒãé©çšããïŒäŸïŒæžéã®ããã®`velocity = velocity * friction`ãã¹ããªã³ã°ã®ããã®ããã¯ã®æ³åïŒã
- æ»ããã§ããã©ãŒãã³ã¹ã®é«ãã¢ãã¡ãŒã·ã§ã³ã®ããã«ã`requestAnimationFrame`ã䜿çšããŠãã¹ã¯ããŒã«å¯èœãªã³ã³ãã³ãã®`transform`ããããã£ïŒäŸïŒ`translateY`ïŒãæŽæ°ãããã`scrollTop` / `scrollLeft`ãç¹°ãè¿ã調æŽããã
ãã®ã¢ãããŒãã¯ãã¢ãã¡ãŒã·ã§ã³ã«ãŒããç©çæ¹çšåŒãããã³ããã©ãŒãã³ã¹æé©åã«é¢ããããæ·±ãçè§£ãå¿ èŠãšããŸãããæ¯é¡ã®ãªãã«ã¹ã¿ãã€ãºãæäŸããŸãã
æªæ¥ïŒãããã€ãã£ããªCSSç©çåŠãžïŒ
Webãã©ãããã©ãŒã ã¯çµ¶ããé²åããŠããŸããCSS Houdiniã®ãããªã€ãã·ã¢ããã¯ãéçºè ãCSSå ã§çŽæ¥ã¬ã³ããªã³ã°ãšã¢ãã¡ãŒã·ã§ã³ãããäœã¬ãã«ã§å¶åŸ¡ã§ããããã«ãªãæªæ¥ã瀺åããŠããããã宣èšçãªç©çããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãå¯èœã«ããå¯èœæ§ããããŸãããã©ãŠã¶ãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ãæé©åããæ°ããCSSã¢ãžã¥ãŒã«ãæ¢æ±ãç¶ããã«ã€ããŠãæ £æ§ã¹ã¯ããŒã«ã匟æ§å¢çãCSSã§çŽæ¥å®çŸ©ãããããã€ãã£ããªæ¹æ³ãç»å Žãããããã®äžè¬çãªãã¿ãŒã³ã«å¯ŸããJavaScriptãžã®äŸåãæžãããããããŸããã
ã¹ã¯ããŒã«ç©çåŠã念é ã«çœ®ããèšèš
ã¹ã¯ããŒã«ç©çåŠã®å®è£ ã¯ãåãªãæè¡çãªèª²é¡ã§ã¯ãªãããã¶ã€ã³äžã®æ±ºå®ã§ããææ ®æ·±ãé©çšã¯ããããã®ãã€ããã¯ã¹ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæãªãã®ã§ã¯ãªããåäžãããããšãä¿èšŒããŸãã
ãŠãŒã¶ãŒã®æåŸ ãçè§£ããïŒãèªç¶ãã«æãããšã¯ïŒ
ãèªç¶ãªãã¹ã¯ããŒã«ã®å®çŸ©ã¯äž»èгçã§ãããæåçãªåœ±é¿ãåããããšãããããŸãããäžè¬çã«ã¯ãçŸå®äžçã®ç©çåŠããããŸãèšèšããããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã§èŠãããäžè¬çãªãã¿ãŒã³ã«æ²¿ã£ãæåãæããŸããããŸããŸãªæ©æŠãæ £æ§ãã¹ããªã³ã°å®æ°ãå®éã®ãŠãŒã¶ãŒã§ãã¹ããã倿§ãªå±€ã«ããã£ãŠçŽæçã§å¿«é©ã«æããã¹ã€ãŒãã¹ããããèŠã€ããããšãéèŠã§ãã
ãªã¢ãªãºã ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹
ç©çèšç®ãç¹ã«é£ç¶çã«è¡ããããã®ã¯ãèšç®è² è·ãé«ããªãå¯èœæ§ããããŸãããªã¢ã«ãªãã€ããã¯ã¹ãšã¹ã ãŒãºãªããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãåãããšãæãéèŠã§ããéãç©çãšã³ãžã³ã¯CPUãšGPUãªãœãŒã¹ãæ¶è²»ããç¹ã«äœã¹ããã¯ã®ããã€ã¹ãè€éãªUIã§ã«ã¯ã€ããåŒãèµ·ããå¯èœæ§ããããŸãããã¹ããã©ã¯ãã£ã¹ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- ãã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³æŽæ°ã«`requestAnimationFrame`ã䜿çšããã
- CSSã®`transform`ãš`opacity`ããããã£ïŒGPUã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå¯èœïŒãã¢ãã¡ãŒã·ã§ã³åãã`height`ã`width`ã`top`ã`left`ã®ãããªããããã£ïŒãã°ãã°ã¬ã€ã¢ãŠãã®åèšç®ãåŒãèµ·ããïŒã¯é¿ããã
- ã€ãã³ããªã¹ããŒããããŠã³ã¹ãŸãã¯ã¹ããããªã³ã°ããã
- ç©çæ¹çšåŒãå¯èœãªéã軜éã«ãªãããã«æé©åããã
ã«ã¹ã¿ãã€ãºãªãã·ã§ã³ïŒäœéšã®èª¿æŽ
ç©çãšã³ãžã³ã®åŒ·ã¿ã®1ã€ã¯ããã®èšå®å¯èœæ§ã§ããéçºè ãšãã¶ã€ããŒã¯ã次ã®ãããªãã©ã¡ãŒã¿ã埮調æŽã§ããã¹ãã§ãïŒ
- 質é/éãïŒã³ã³ãã³ããã©ãã ããéããæãããã«åœ±é¿ããŸãã
- 匵å/åæ§ïŒã¹ããªã³ã°å¹æã®ããã
- æ©æŠ/æžè¡°ïŒåããã©ãã ãéãæ¶æ£ãããã
- ãããå€ïŒåŒŸæ§ããŠã³ã¹ã§ã©ãã ãã®ãªãŒããŒã·ã¥ãŒãã蚱容ããããã
ãã®ã¬ãã«ã®ã«ã¹ã¿ãã€ãºã«ãããç¬èªã®ãã©ã³ã衚çŸãå¯èœã«ãªããŸããé«çŽãã©ã³ãã®ãŠã§ããµã€ãã¯éãããã£ãããšãããæå³çãªã¹ã¯ããŒã«ãç¹åŸŽãšãããããããŸããããã²ãŒã ãã©ãããã©ãŒã ã¯è»œããéãã匟ããããªæè§Šãéžã¶ãããããŸããã
æç¢ºãªèŠèŠçãã£ãŒãããã¯ã®æäŸ
ç©çåŠèªäœãè§ŠèŠçãªãã£ãŒãããã¯ãæäŸããŸãããèŠèŠçãªæãããã¯äœéšãããã«åäžãããããšãã§ããŸããäŸãã°ïŒ
- 匟æ§ããŠã³ã¹äžã®ã¢ã€ãã ã®åŸ®çްãªã¹ã±ãŒãªã³ã°ãå転ã
- ç©çã·ãã¥ã¬ãŒã·ã§ã³å ã®çŸåšã®é床ãäœçœ®ãåæ ããåçãªã¹ã¯ããŒã«ã€ã³ãžã±ãŒã¿ãŒã
ãããã®æãããã¯ããŠãŒã¶ãŒãã·ã¹ãã ã®ç¶æ³ãšæåãããæç¢ºã«çè§£ããã®ã«åœ¹ç«ã¡ãŸãã
å®è·µçãªå®è£ äŸïŒã¹ã¯ããŒã«ç©çåŠãèŒãå Žæ
ãªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ã¯ããããµããã³ã³ããŒãã³ããé åçãªã€ã³ã¿ã©ã¯ãã£ãèŠçŽ ã«å€ããããšãã§ããŸãããã®ã¢ãããŒããçã«èŒãã°ããŒãã«ãªäŸãããã€ã玹ä»ããŸãïŒ
1. ç»åã®ã£ã©ãªãŒãšã«ã«ãŒã»ã«
åçªãªã¹ã©ã€ããç·åœ¢çãªãã©ã³ãžã·ã§ã³ã®ä»£ããã«ãæ £æ§ã¹ã¯ããŒã«ãåããç»åã®ã£ã©ãªãŒã¯ä¿¡ããããªãã»ã©èªç¶ã«æããããŸãããŠãŒã¶ãŒã¯ç»åãçŽ æ©ãããªãã¯ã§ããã®ã£ã©ãªãŒã¯ã¹ã¯ããŒã«ãç¶ããåŸã ã«æžéããŠæ»ããã«åæ¢ãããã°ãã°åŸ®çްãªåŒŸåæ§ã®ããåŒãã§æãè¿ãç»åã«åªããã¹ãããããŸããããã¯ãeã³ããŒã¹ãã©ãããã©ãŒã ãããŒããã©ãªãªãµã€ãããŸãã¯è€æ°ã®èŠèŠè³ç£ãå±ç€ºãããã¥ãŒã¹ããŒã¿ã«ã§ç¹ã«å¹æçã§ãã
2. ç¡éã¹ã¯ããŒã«ãªã¹ããšãã£ãŒã
ãŠãŒã¶ãŒãç¡éã«ã¹ã¯ããŒã«ã§ãããœãŒã·ã£ã«ã¡ãã£ã¢ãã£ãŒãã補åã«ã¿ãã°ãæ³åããŠã¿ãŠãã ããã圌ããäžçªæåŸã«å°éãããšãïŒããçµãããããå ŽåããŸãã¯æ°ããã³ã³ãã³ããèªã¿èŸŒãŸããçŽåïŒãç©ãããªåŒŸæ§ããŠã³ã¹ãæºè¶³ã®ããè§ŠèŠçãªç¢ºèªãæäŸããŸããããã«ãããåºã忢ã«ã¶ã€ãããšããäžå¿«ãªäœéšãé²ããã埮现ãªååã®åŸã«æ°ããã¢ã€ãã ãã·ãŒã ã¬ã¹ã«è¡šç€ºããããããã³ã³ãã³ãã®èªã¿èŸŒã¿ãããçµ±åãããæãã«ãªããŸãã
3. ã€ã³ã¿ã©ã¯ãã£ããªããŒã¿å¯èŠåãšå°å³
è€éãªããŒã¿å¯èŠåãã€ã³ã¿ã©ã¯ãã£ããªå°å³ããã³ããããºãŒã ãããããæäœã¯ãã¹ã¯ããŒã«ç©çåŠãã倧ããªæ©æµãåããŸãã硬çŽããããŠã¹ã¯ãªãã¯é§åã®åãã®ä»£ããã«ããŠãŒã¶ãŒã¯æ»ããã«ãã©ãã°ããŠé¢ãããšãã§ããå°å³ãå¯èŠåãæ £æ§ã§æ°ããäœçœ®ã«æ»ããæçµçã«èœã¡çããŸããããã«ãããç¹ã«ç ç©¶è ãã¢ããªã¹ãããŸãã¯ã°ããŒãã«ãªå°å³ãããã²ãŒãããæ è¡è ã«ãšã£ãŠãå€§èŠæš¡ãªããŒã¿ã»ãããå°çæ å ±ã®æ¢çŽ¢ãã¯ããã«çŽæçã§ç²ãã«ãããªããŸãã
4. 匟æ§ãã©ã³ãžã·ã§ã³ä»ãã®ãã«ããŒãžã¹ã¯ããŒã«ã»ã¯ã·ã§ã³
å€ãã®çŸä»£ã®ãŠã§ããµã€ãã¯ããŠãŒã¶ãŒãã¹ã¯ããŒã«ãããšãã¥ãŒã«ã¹ããããããã«ããŒãžã»ã¯ã·ã§ã³ã䜿çšããŠããŸããCSSã®`scroll-snap`ãšã«ã¹ã¿ã JavaScriptç©çãšã³ãžã³ãçµã¿åãããããšã§ãéçºè ã¯åŒŸæ§ãã©ã³ãžã·ã§ã³ã远å ã§ããŸãããŠãŒã¶ãŒãæ°ããã»ã¯ã·ã§ã³ã«ã¹ã¯ããŒã«ãããšãããã¯åã«ã¹ãããããã®ã§ã¯ãªããããããªãªãŒããŒã·ã¥ãŒãã§æ»ãããããŠå®ç§ãªäœçœ®ã«ã¹ããªã³ã°ããã¯ããŸããããã¯ãã©ã³ãã£ã³ã°ããŒãžã補åã·ã§ãŒã±ãŒã¹ããŸãã¯ã€ã³ã¿ã©ã¯ãã£ããªã¹ããŒãªãŒããªã³ã°äœéšã§äžè¬çã«èŠããããç°ãªãã³ã³ãã³ããããã¯éã®æ¥œãããã©ã³ãžã·ã§ã³ãæäŸããŸãã
5. ã«ã¹ã¿ã ã¹ã¯ããŒã«å¯èœãªãµã€ãããŒãšã¢ãŒãã«
ãªãŒããŒãããŒã³ã³ãã³ããæã€ããããèŠçŽ ïŒé·ããµã€ãããŒããã²ãŒã·ã§ã³ãã¢ãŒãã«å ã®è€éãªãã©ãŒã ãè©³çŽ°ãªæ å ±ããã«ãªã©ïŒã¯ãç©çé§åã¹ã¯ããŒã«ã®æ©æµãåããããšãã§ããŸããå¿çæ§ã®é«ãæ £æ§ã¹ã¯ããŒã«ã¯ããããã®ãã°ãã°å¯éããã³ã³ããŒãã³ãããã軜ããããã²ãŒãããããæããããç¹ã«æ£ç¢ºãªå¶åŸ¡ãæãéèŠãªå°ããªç»é¢ã§ã®ãŠãŒã¶ããªãã£ãåäžãããŸãã
ã°ããŒãã«å®è£ ã«ããã課é¡ãšèæ ®äºé
å©ç¹ã¯æããã§ããããªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ãå®è£ ããã«ã¯ãç¹ã«å€æ§ãªããŒããŠã§ã¢ããœãããŠã§ã¢ãããã³ã¢ã¯ã»ã·ããªãã£ã®ããŒãºãæã€ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã察象ãšããå Žåãæ éãªèæ ®ãå¿ èŠã§ãã
1. ããã©ãŒãã³ã¹ãªãŒããŒãããïŒèª°ã«ãšã£ãŠãã¹ã ãŒãºã«ä¿ã€
`requestAnimationFrame`ã§ç¶ç¶çã«å®è¡ãããç©çèšç®ã¯ãCPUã«è² è·ããããå¯èœæ§ããããŸããããã¯ãå€ãããã€ã¹ãæ§èœã®äœãããã»ããµããŸãã¯ãªãœãŒã¹ãéãããç°å¢ïŒäŸïŒã¹ã¯ãªããã®èªã¿èŸŒã¿ã«åœ±é¿ããé ãã€ã³ã¿ãŒãããæ¥ç¶ïŒã§ããã©ãŒãã³ã¹ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸããéçºè ã¯ä»¥äžãè¡ãå¿ èŠããããŸãïŒ
- ç©çèšç®ãã¹ãªã ã«ããããã«æé©åããã
- ã€ãã³ããªã¹ããŒã广çã«ã¹ããããªã³ã°/ãããŠã³ã¹ããã
- GPUã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãããCSSããããã£ïŒ`transform`ã`opacity`ïŒãåªå ããã
- å€ããã©ãŠã¶ãæ§èœã®äœãããŒããŠã§ã¢ã«å¯ŸããŠãæ©èœæ€åºãŸãã¯ã°ã¬ãŒã¹ãã«ãã°ã©ããŒã·ã§ã³ãå®è£ ããã
2. ãã©ãŠã¶äºææ§ïŒWebã®åžžã«ååšãã課é¡
çŸä»£ã®ãã©ãŠã¶ã¯äžè¬çã«CSSãã©ã³ãžã·ã§ã³ãã¢ãã¡ãŒã·ã§ã³ãããŸãåŠçããŸãããã¿ããã€ãã³ããã¹ã¯ããŒã«ã€ãã³ãã®è§£éæ¹æ³ãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã®è©³çްã¯ç°ãªãå ŽåããããŸããç°ãªããã©ãŠã¶ïŒChrome, Firefox, Safari, EdgeïŒããã³ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒWindows, macOS, Android, iOSïŒã§ã®åŸ¹åºçãªãã¹ãã¯ãäžçäžã§äžè²«ããé«å質ãªäœéšãä¿èšŒããããã«äžå¯æ¬ ã§ãã
3. ã¢ã¯ã»ã·ããªãã£ã«é¢ããæžå¿µïŒå æ¬æ§ã®ç¢ºä¿
æãéèŠãªèæ ®äºé ã®1ã€ã¯ã¢ã¯ã»ã·ããªãã£ã§ããæµãããããªåãã¯å€ãã®äººã«ãšã£ãŠæ¥œãããã®ã§ãããä»ã®äººã«ãšã£ãŠã¯æå®³ãªå ŽåããããŸãïŒ
- ä¹ãç©é ãïŒä¹ãç©é ããããããŠãŒã¶ãŒã«ãšã£ãŠãéå°ãŸãã¯äºæããªãåãã¯æ¹åæèŠã倱ãããäžå¿«ã«ãããããšããããŸãã
- èªç¥è² è·ïŒèªç¥é害ã®ãããŠãŒã¶ãŒã«ãšã£ãŠãå€ãããã¢ãã¡ãŒã·ã§ã³ã¯æ³šæãæ£æŒ«ã«ãããããæ··ä¹±ããããããå¯èœæ§ããããŸãã
- å¶åŸ¡ã®åé¡ïŒéåé害ã®ãããŠãŒã¶ãŒã¯ãåŒ·ãæ £æ§ã匟æ§ç¹æ§ãæã€ã³ã³ãã³ããå¶åŸ¡ããã®ãé£ããå ŽåããããŸããäºæããåããããæ£ç¢ºã«åæ¢ããã®ãå°é£ã ã£ããããããã§ãã
ãã¹ããã©ã¯ãã£ã¹ïŒ`prefers-reduced-motion`ãå°éãã
`prefers-reduced-motion`ã¡ãã£ã¢ã¯ãšãªãå°éããããšãäžå¯æ¬ ã§ãããŠãŒã¶ãŒã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®èšå®ã§ã€ã³ã¿ãŒãã§ãŒã¹ã®åããæžããããšãã§ããŸãããŠã§ããµã€ãã¯ãã®èšå®ãæ€åºãããããã®ãŠãŒã¶ãŒã«å¯ŸããŠç©çããŒã¹ã®ã¹ã¯ããŒã«å¹æãç¡å¹ã«ãããã倧å¹
ã«åæžããå¿
èŠããããŸããäŸãã°ïŒ
@media (prefers-reduced-motion) {
/* ç©çããŒã¹ã®ã¹ã¯ããŒã«ãç¡å¹åãŸãã¯åçŽåãã */
.scrollable-element {
scroll-behavior: auto !important; /* ã¹ã ãŒãºã¹ã¯ããŒã«ãäžæžã */
/* JSé§åã®ç©çãšãã§ã¯ããç¡å¹åãŸãã¯åçŽåããå¿
èŠããã */
}
}
ããã«ãã¢ãã¡ãŒã·ã§ã³ãäžæåæ¢ãŸãã¯åæ¢ããããã®æç¢ºãªã³ã³ãããŒã«ãæäŸãããã代æ¿ã®éçãªããŒãžã§ã³ã®ã³ã³ãã³ããæäŸãããããããšã§ãå æ¬æ§ãé«ããããšãã§ããŸãã
4. éå°èšèšïŒãã€ãããããç¥ã
ãã¹ãŠã®ã¹ã¯ããŒã«å¯èœãªèŠçŽ ã«é«åºŠãªç©çåŠãé©çšããããšããèªæã¯ãéå°èšèšã«ã€ãªããå¯èœæ§ããããŸãããã¹ãŠã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã«è€éãªç©çåŠãå¿ èŠãªããã§ã¯ãããŸãããåçŽãª`scroll-behavior: smooth;`ãåºæ¬çãªCSS `scroll-snap`ã§ååãªèŠçŽ ãå€ããããŸããéçºè ã¯ããªã¢ã«ãªã¹ã¯ããŒã«ãã€ããã¯ã¹ãæ¬åœã«UXãåäžãããå Žæãšãåã«äžå¿ èŠãªè€éããšãªãŒããŒãããã远å ããã ãã®å Žæãè³¢æã«éžæããå¿ èŠããããŸãã
5. åŠç¿æ²ç·ïŒéçºè ãšãã¶ã€ããŒã®ããã«
æŽç·Žãããç©çãšã³ãžã³ãç¹ã«ã«ã¹ã¿ã ã®ãã®ãå®è£ ããã«ã¯ãæ°åŠçãªååïŒãã¯ãã«ãåãæžè¡°ïŒãšé«åºŠãªJavaScriptã¢ãã¡ãŒã·ã§ã³æè¡ã«é¢ããããæ·±ãçè§£ãå¿ èŠã§ããã©ã€ãã©ãªã䜿çšããŠãããã®èœåãç¿åŸããæ£ãã調æŽããã«ã¯æéããããããšããããŸãããã®åŠç¿æ²ç·ã¯ããããžã§ã¯ãã®ã¿ã€ã ã©ã€ã³ãšããŒã ã®ã¹ãã«éçºã«èæ ®ã«å ¥ããã¹ãã§ãã
ã¹ã¯ããŒã«ãã€ããã¯ã¹ã®æªæ¥ïŒå ãèŠæ®ããŠ
Webãã©ãããã©ãŒã ã¯çµ¶ãéãªãå¢çãæŒãåºããŠãããã¹ã¯ããŒã«ãã€ããã¯ã¹ã®æªæ¥ã¯ãããã«æ²¡å ¥æã®ããçŽæçãªäœéšãçŽæããŠããŸãã
1. Webæšæºã®é²åïŒãã宣èšçãªå¶åŸ¡ãž
å°æ¥ã®CSS仿§ããã©ãŠã¶APIããç©çããŒã¹ã®ã¹ã¯ããŒã«ããããã£ãçŽæ¥å®çŸ©ããããã®ãã宣èšçãªæ¹æ³ãæäŸããå¯èœæ§ã¯ååã«ãããŸãããã©ãŠã¶ããã€ãã£ãã«æé©åã§ãã`scroll-inertia`ã`scroll-friction`ããŸãã¯`scroll-elasticity`ã®ãããªCSSããããã£ãæ³åããŠã¿ãŠãã ãããããã«ããããããã®é«åºŠãªãšãã§ã¯ããžã®ã¢ã¯ã»ã¹ãæ°äž»åãããå®è£ ã容æã«ãªããããã©ãŒãã³ã¹ãåäžããå¯èœæ§ããããŸãã
2. æ°èæè¡ãšã®çµ±å
æ¡åŒµçŸå®ïŒARïŒãä»®æ³çŸå®ïŒVRïŒäœéšãWebäžã§ããæ®åããã«ã€ããŠïŒäŸïŒWebXRçµç±ïŒãã¹ã¯ããŒã«ãã€ããã¯ã¹ã¯3Dç°å¢å ã®ããã²ãŒã·ã§ã³ãå¶åŸ¡ããããã«é²åãããããããŸãããä»®æ³ã®è£œåã«ã¿ãã°ããããªãã¯ããããããªã¢ã«ãªç©çåŠã§3Dã¢ãã«ããã³ãããããããšãæ³åããŠã¿ãŠãã ãããããã«ããã空éã€ã³ã¿ãŒãã§ãŒã¹ã§è§ŠèŠçãªæè§ŠãæäŸãããŸãã
3. AIãšæ©æ¢°åŠç¿ã«ããé©å¿åã¹ã¯ããŒã«
å°æ¥ã®ã¹ã¯ããŒã«ãšã³ãžã³ã¯ããŠãŒã¶ãŒã®ãã¿ãŒã³ãããã€ã¹ã®èœåãããã«ã¯åšå²ã®ç¶æ³ã«åºã¥ããŠã¹ã¯ããŒã«æåãåçã«é©å¿ãããããã«ãAIãæŽ»çšããå¯èœæ§ããããŸããAIããŠãŒã¶ãŒã®å¥œã¿ã®ã¹ã¯ããŒã«é床ãåŠç¿ããããæºããé»è»ã«ä¹ã£ãŠãããã鿢ããæºã«ãããã«åºã¥ããŠæ©æŠã調æŽãããããŠãçã«ããŒãœãã©ã€ãºãããäœéšãæäŸããããšãã§ããŸãã
4. é«åºŠãªå ¥åæ¹æ³ãšè§ŠèŠãã£ãŒãããã¯
é«åºŠãªãã©ãã¯ããããã¹ããŒããã©ã³ã®è§ŠèŠãã£ãŒãããã¯ã¢ãŒã¿ãŒãªã©ã®é²åããå ¥åããã€ã¹ã«ãããã¹ã¯ããŒã«ãã€ããã¯ã¹ã¯ããã«çŽæçã«ãªãå¯èœæ§ããããŸããè§ŠèŠãã£ãŒãããã¯ãéããŠãæ©æŠãããããŠã³ã¹ããæããããšãæ³åããŠã¿ãŠãã ãããããã«ãããWebã€ã³ã¿ã©ã¯ã·ã§ã³ã«ãããªããªã¢ãªãºã ãšæ²¡å ¥æã®å±€ãå ãããŸãã
çµè«ïŒããè§ŠèŠçãªWebãåµé ãã
åºæ¬çã§æ©èœçãªã¹ã¯ããŒã«ãããæŽç·Žãããç©çé§åã®ãã€ããã¯ã¹ãžã®éã®ãã¯ãWebéçºã«ãããããåºç¯ãªãã¬ã³ããããªãã¡åŒ·åããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®çµ¶ãéãªã远æ±ãåæ ããŠããŸããCSSã¹ã¯ããŒã«æåç©çãšã³ãžã³ã¯ããã€ãã£ãCSSããããã£ã®ãã¬ã³ããéããŠå®è£ ãããããé«åºŠãªJavaScriptã©ã€ãã©ãªã«ãã£ãŠé§åããããã«ããããããçŽæçã§é åçããããŠçã«å¿çæ§ã®é«ãWebã€ã³ã¿ã©ã¯ã·ã§ã³ãåµé ããããã®åŒ·åãªããŒã«ããããæäŸããŸãã
æ £æ§ãæ©æŠã匟æ§ã®åºæ¬ååãçè§£ãããªã¢ãªãºã ãšããã©ãŒãã³ã¹ããã³ã¢ã¯ã»ã·ããªãã£ãæ éã«ãã©ã³ã¹ãããããšã«ãããéçºè ã¯æ©èœçã«å®ç§ã§ããã ãã§ãªããäžçäžã®ãŠãŒã¶ãŒãåã°ããWebã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããŸããWebæšæºãé²åãç¶ããã«ã€ããŠããããã®è€éãªæåã«å¯Ÿãããã€ãã£ããµããŒããããã«å¢ããããšãæåŸ ãããããã衚çŸããããšããããšãå€ãç©çäžçãšåããããè§ŠèŠçã§å¿çæ§ã®é«ãWebãžã®éãéãããŸãã
Webã€ã³ã¿ã©ã¯ã·ã§ã³ã®æªæ¥ã¯ãæµåçã§ããã€ãããã¯ã§ããããŠæ·±ãç©ççã§ããã¹ã¯ããŒã«ã®ç©çåŠãåãå ¥ããããªãã®Webãããžã§ã¯ããæ°ããªé«ã¿ãžãšåŒãäžããæºåã¯ã§ããŠããŸããïŒ