ã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ãåæžããã¬ã³ããªã³ã°é床ãåäžãããæŠç¥ãªã©ãCSSã¢ã³ã«ãŒãµã€ãžã³ã°ã®ããã©ãŒãã³ã¹æé©åæè¡ãæ¢æ±ããããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããŸãã
CSSã¢ã³ã«ãŒãµã€ãºã®ããã©ãŒãã³ã¹ïŒã¢ã³ã«ãŒå¯žæ³ã®èšç®ãæé©åãã
çŸä»£ã®ãŠã§ãéçºã«ãããŠãã¬ã¹ãã³ã·ãã§åçãªã¬ã€ã¢ãŠããäœæããããšã¯æãéèŠã§ããCSSã¢ã³ã«ãŒãµã€ãžã³ã°ã¯ãç¹ã«ã³ã³ããã¯ãšãªãCSS倿°ãšãã£ãæ©èœãšçµã¿åãããããšã§ããããå®çŸããããã®åŒ·åãªããŒã«ãæäŸããŸããããããéå¹çãªå®è£ ã¯ããã©ãŒãã³ã¹ã®ããã«ããã¯ã«ã€ãªããå¯èœæ§ããããŸãããã®èšäºã§ã¯ãCSSã¢ã³ã«ãŒå¯žæ³ã®èšç®ãæé©åããã¬ã³ããªã³ã°é床ãåäžãããã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ãåæžããããšã§ããŠã§ããµã€ã蚪åè ã«ãšã£ãŠããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã確ä¿ããæ¹æ³ãæãäžããŠãããŸãã
CSSã¢ã³ã«ãŒãµã€ãžã³ã°ã®çè§£
CSSã¢ã³ã«ãŒãµã€ãžã³ã°ãšã¯ãããèŠçŽ ïŒãã¢ã³ã«ãŒãèŠçŽ ïŒã®ãµã€ãºãåºæºã«ããŠãå¥ã®èŠçŽ ïŒãã¢ã³ã«ãŒããããèŠçŽ ïŒã®ãµã€ãºãå®çŸ©ããæ©èœã®ããšã§ããããã¯ãç°ãªãã³ã³ãããµã€ãºã«ã·ãŒã ã¬ã¹ã«é©å¿ããã³ã³ããŒãã³ããäœæããéã«ç¹ã«äŸ¿å©ã§ãããã¬ã¹ãã³ã·ãã§æè»ãªãã¶ã€ã³ãå¯èœã«ããŸããæãäžè¬çãªäœ¿çšäŸã¯ã芪ã³ã³ããã®å¯žæ³ã«åºã¥ããŠã¹ã¿ã€ã«ãé©çšããã³ã³ããã¯ãšãªããã¢ã³ã«ãŒã®å¯žæ³ãåæ ããŠåçã«æŽæ°ã§ããCSS倿°ã§ãã
äŸãã°ãã³ã³ããã®å¹ ã«åºã¥ããŠã¬ã€ã¢ãŠãã調æŽããå¿ èŠãããã«ãŒãã³ã³ããŒãã³ããèããŠã¿ãŸããããã³ã³ããã¯ãšãªã䜿çšããããšã§ãã³ã³ããã®å¹ ãç¹å®ã®ãããå€ãè¶ ããå Žåã«ãã«ãŒãã«å¯ŸããŠç°ãªãã¹ã¿ã€ã«ãå®çŸ©ã§ããŸãã
ããã©ãŒãã³ã¹ãžã®åœ±é¿
CSSã¢ã³ã«ãŒãµã€ãžã³ã°ã¯å€§ããªæè»æ§ãæäŸããŸããããã®æœåšçãªããã©ãŒãã³ã¹ãžã®åœ±é¿ãçè§£ããããšãéèŠã§ãããã©ãŠã¶ã¯ãã¢ã³ã«ãŒãããèŠçŽ ã®ãµã€ãºãšã¬ã€ã¢ãŠããæ±ºå®ããåã«ãã¢ã³ã«ãŒèŠçŽ ã®å¯žæ³ãèšç®ããå¿ èŠããããŸãããã®èšç®ããã»ã¹ã¯ãç¹ã«è€éãªã¬ã€ã¢ãŠããé »ç¹ã«å€åããã¢ã³ã«ãŒå¯žæ³ãæ±ãå Žåã«ãã³ã¹ããé«ããªãå¯èœæ§ããããŸãããã©ãŠã¶ãçæéã®ãã¡ã«äœåºŠãã¬ã€ã¢ãŠããåèšç®ããå¿ èŠãããå Žåããã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ããšåŒã°ããçŸè±¡ãçºçããããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããããšããããŸãã
ããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ãã
æé©åãè¡ãåã«ãã¢ã³ã«ãŒãµã€ãžã³ã°ãããã©ãŒãã³ã¹åé¡ãåŒãèµ·ãããŠããå ·äœçãªé åãç¹å®ããããšãéèŠã§ãããã©ãŠã¶ã®éçºè ããŒã«ã¯ãã®äœæ¥ã«éåžžã«åœ¹ç«ã¡ãŸãã
ãã©ãŠã¶éçºè ããŒã«ã®äœ¿çš
ChromeãFirefoxãSafariãªã©ã®ã¢ãã³ãã©ãŠã¶ã¯ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããããã¡ã€ãªã³ã°ããããã®åŒ·åãªéçºè ããŒã«ãæäŸããŠããŸãããããã䜿çšããŠã¢ã³ã«ãŒãµã€ãžã³ã°ã®ããã«ããã¯ãç¹å®ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãïŒ
- ããã©ãŒãã³ã¹ããã«ïŒ ããã©ãŒãã³ã¹ããã«ïŒãŸãã¯ã䜿ãã®ãã©ãŠã¶ã®åçæ©èœïŒã䜿çšããŠããŠã§ããµã€ãã®ã¢ã¯ãã£ããã£ã®ã¿ã€ã ã©ã€ã³ãèšé²ããŸãããLayoutãããRecalculate Styleããšã©ãã«ä»ããããã»ã¯ã·ã§ã³ãæ¢ããŸãããããã¯ã¬ã€ã¢ãŠãã®åèšç®ã«è²»ããããæéã瀺ããŠããŸãããããã®ã€ãã³ãã®é »åºŠãšæç¶æéã«æ³šæããŠãã ããã
- ã¬ã³ããªã³ã°ããã«ïŒ ã¬ã³ããªã³ã°ããã«ïŒéåžžãéçºè ããŒã«ã®ãã®ä»ã®ããŒã«ã»ã¯ã·ã§ã³ã«ãããŸãïŒã䜿çšãããšãã¬ã€ã¢ãŠãã·ããããã€ã©ã€ã衚瀺ã§ããŸããããã¯ãã¢ã³ã«ãŒãµã€ãžã³ã°ãéå°ãªãªãããŒãåŒãèµ·ãããŠããé åã瀺ãå¯èœæ§ããããŸãã
- ãã€ã³ããããã¡ã€ãªã³ã°ïŒ ãã€ã³ãæéãåæããŠãã¬ã³ããªã³ã°ã«ã³ã¹ãããããèŠçŽ ãç¹å®ããŸããããã¯ãã¢ã³ã«ãŒãããèŠçŽ ã®ã¹ã¿ã€ãªã³ã°ãæé©åããã®ã«åœ¹ç«ã¡ãŸãã
- JavaScriptãããã¡ã€ã©ïŒ JavaScriptã䜿çšããŠã¢ã³ã«ãŒå¯žæ³ã«åºã¥ããŠCSS倿°ãåçã«æŽæ°ããŠããå Žåã¯ãJavaScriptãããã¡ã€ã©ã䜿çšããŠJavaScriptã³ãŒãå ã®ããã©ãŒãã³ã¹ããã«ããã¯ãç¹å®ããŸãã
ããã©ãŒãã³ã¹ã®ã¿ã€ã ã©ã€ã³ãåæããããšã§ãããã©ãŒãã³ã¹ã®ãªãŒããŒãããã®åå ãšãªã£ãŠããç¹å®ã®èŠçŽ ãã¹ã¿ã€ã«ãæ£ç¢ºã«ç¹å®ã§ããŸãããã®æ å ±ã¯ãæé©åã®åãçµã¿ãå°ãäžã§éåžžã«éèŠã§ãã
æé©åãã¯ããã¯
ããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããããŸããŸãªæé©åãã¯ããã¯ãé©çšããŠã¢ã³ã«ãŒãµã€ãžã³ã°ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
1. ã¢ã³ã«ãŒèŠçŽ ã®åèšç®ãæå°éã«æãã
ããã©ãŒãã³ã¹ãåäžãããæã广çãªæ¹æ³ã¯ããã©ãŠã¶ãã¢ã³ã«ãŒèŠçŽ ã®å¯žæ³ãåèšç®ããå¿ èŠãããåæ°ãæå°éã«æããããšã§ãããããéæããããã®ããã€ãã®æŠç¥ã以äžã«ç€ºããŸãïŒ
- ã¢ã³ã«ãŒå¯žæ³ã®é »ç¹ãªå€æŽãé¿ããïŒ å¯èœã§ããã°ãã¢ã³ã«ãŒèŠçŽ ã®å¯žæ³ãé »ç¹ã«å€æŽããããšã¯é¿ããŠãã ãããã¢ã³ã«ãŒèŠçŽ ãžã®å€æŽã¯ãã¢ã³ã«ãŒãããèŠçŽ ã®ã¬ã€ã¢ãŠãã®åèšç®ãåŒãèµ·ãããã³ã¹ãããããå¯èœæ§ããããŸãã
- å¯žæ³æŽæ°ã®ãããŠã³ã¹ãŸãã¯ã¹ããããªã³ã°ïŒ ã¢ã³ã«ãŒå¯žæ³ã«åºã¥ããŠCSS倿°ãåçã«æŽæ°ããå¿ èŠãããå Žåã¯ããããŠã³ã¹ãã¹ããããªã³ã°ãªã©ã®ãã¯ããã¯ã䜿çšããŠæŽæ°ã®é »åºŠãå¶éããŸããããã«ãããæŽæ°ãäžå®ã®é å»¶åŸãŸãã¯æå€§ã¬ãŒãã§ã®ã¿é©çšãããããã«ãªããåèšç®ã®åæ°ãæžå°ããŸãã
- `ResizeObserver`ãæ
éã«äœ¿çšããïŒ
ResizeObserverAPIã䜿çšãããšãèŠçŽ ã®ãµã€ãºã®å€æŽãç£èŠã§ããŸãããã ãããããè³¢æã«äœ¿çšããããšãéèŠã§ããåã€ã³ã¹ã¿ã³ã¹ããªãŒããŒãããã远å ããå¯èœæ§ããããããããŸãã«ãå€ãã®ResizeObserverã€ã³ã¹ã¿ã³ã¹ãäœæããããšã¯é¿ããŠãã ããããŸããã³ãŒã«ããã¯é¢æ°ãäžèŠãªèšç®ãé¿ããããã«æé©åãããŠããããšã確èªããŠãã ãããã³ãŒã«ããã¯å ã§`requestAnimationFrame`ã䜿çšããŠã¬ã³ããªã³ã°ãããã«æé©åããããšãæ€èšããŠãã ããã
2. CSSã»ã¬ã¯ã¿ãæé©åãã
CSSã»ã¬ã¯ã¿ã®è€éãã¯ãããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸããè€éãªã»ã¬ã¯ã¿ã¯ãã©ãŠã¶ãè©äŸ¡ããã®ã«æéãããããã¬ã³ããªã³ã°ããã»ã¹ãé ãããå¯èœæ§ããããŸãã
- ã»ã¬ã¯ã¿ãã·ã³ãã«ã«ä¿ã€ïŒ å€ãã®ãã¹ããããèŠçŽ ã屿§ã»ã¬ã¯ã¿ãæã€é床ã«è€éãªã»ã¬ã¯ã¿ã¯é¿ããŠãã ãããããã·ã³ãã«ãªã»ã¬ã¯ã¿ã®æ¹ãè©äŸ¡ãéãã§ãã
- èŠçŽ ã»ã¬ã¯ã¿ã®ä»£ããã«ã¯ã©ã¹ã䜿çšããïŒ ã¯ã©ã¹ã¯äžè¬çã«èŠçŽ ã»ã¬ã¯ã¿ãããé«éã§ããèŠçŽ åãæ§é ã»ã¬ã¯ã¿ã«é Œãã®ã§ã¯ãªããã¯ã©ã¹ã䜿çšããŠç¹å®ã®èŠçŽ ãã¿ãŒã²ããã«ããŸãã
- ãŠãããŒãµã«ã»ã¬ã¯ã¿ãé¿ããïŒ ãŠãããŒãµã«ã»ã¬ã¯ã¿ (*) ã¯ãç¹ã«è€éãªã¬ã€ã¢ãŠãã§äœ¿çšãããå Žåã«éåžžã«ã³ã¹ããé«ããªãå¯èœæ§ããããŸãã絶察ã«å¿ èŠãªå Žåãé€ãã䜿çšãé¿ããŠãã ããã
- `contain`ããããã£ã䜿çšããïŒ CSSã®`contain`ããããã£ã䜿çšãããšãDOMããªãŒã®äžéšãåé¢ããã¬ã€ã¢ãŠãããã€ã³ãæäœã®ã¹ã³ãŒããå¶éã§ããŸãã`contain: layout;`ã`contain: paint;`ããŸãã¯`contain: content;`ã䜿çšããããšã§ãããŒãžã®äžéšã®å€æŽãä»ã®éšåã®åèšç®ãåŒãèµ·ããã®ãé²ãããšãã§ããŸãã
3. ã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ãæé©åãã
ã¢ã³ã«ãŒèŠçŽ ã®åèšç®ãæå°éã«æããŠããã¢ã³ã«ãŒãããèŠçŽ ã®ã¬ã³ããªã³ã°ãããã©ãŒãã³ã¹ã®ããã«ããã¯ã«ãªãããšããããŸããã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ãæé©åããããã®ãã¯ããã¯ãããã€ã玹ä»ããŸãïŒ
- `will-change`ãé©åã«äœ¿çšããïŒ `will-change`ããããã£ã¯ãèŠçŽ ã«ä»åŸå€æŽãããããšããã©ãŠã¶ã«äŒããäºåã«ã¬ã³ããªã³ã°ãæé©åã§ããããã«ããŸãããã ãã䜿ãããããšéã«ããã©ãŒãã³ã¹ãäœäžãããå¯èœæ§ããããããæ§ããã«äœ¿çšããããšãéèŠã§ãã`will-change`ã¯å€æŽãäºå®ãããŠããèŠçŽ ã«ã®ã¿äœ¿çšãã倿Žãå®äºãããåé€ããŠãã ããã
- ã³ã¹ãã®é«ãCSSããããã£ãé¿ããïŒ `box-shadow`ã`filter`ã`opacity`ãªã©ã®äžéšã®CSSããããã£ã¯ãã¬ã³ããªã³ã°ã«ã³ã¹ãããããå ŽåããããŸãããããã®ããããã£ã¯æ éã«äœ¿çšããå¯èœã§ããã°ä»£æ¿ã¢ãããŒããæ€èšããŠãã ãããäŸãã°ã`box-shadow`ã®ä»£ããã«èæ¯ç»åã䜿çšããŠåæ§ã®å¹æãåŸãããšãã§ãããããããŸããã
- ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšããïŒ `transform`ã`opacity`ãªã©ã®äžéšã®CSSããããã£ã¯ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå©çšã§ããŸããããã¯ããã©ãŠã¶ãGPUã䜿çšããŠããããã¬ã³ããªã³ã°ã§ããããšãæå³ããããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãããããã®ããããã£ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãæå¹ã«ããæ¹æ³ã§äœ¿çšãããŠããããšã確èªããŠãã ããã
- DOMãµã€ãºãåæžããïŒ DOMããªãŒãå°ããã»ã©ãäžè¬çã«ã¬ã³ããªã³ã°ãéããªããŸããHTMLã³ãŒãããäžèŠãªèŠçŽ ãåé€ããä»®æ³åãªã©ã®ãã¯ããã¯ã䜿çšããŠå€§ããªãªã¹ãã®å¯èŠéšåã®ã¿ãã¬ã³ããªã³ã°ããããšãæ€èšããŠãã ããã
- ç»åãæé©åããïŒ ç»åãå§çž®ããé©åãªãã¡ã€ã«åœ¢åŒã䜿çšããŠãŠã§ãçšã«æé©åããŸãã倧ããªç»åã¯ã¬ã³ããªã³ã°ãå€§å¹ ã«é ãããå¯èœæ§ããããŸãã
4. CSS倿°ãšã«ã¹ã¿ã ããããã£ã掻çšãã
CSS倿°ïŒã«ã¹ã¿ã ããããã£ãšãåŒã°ããŸãïŒã¯ãã¢ã³ã«ãŒå¯žæ³ã«åºã¥ããŠã¹ã¿ã€ã«ãåçã«æŽæ°ããããã®åŒ·åãªæ¹æ³ãæäŸããŸãããã ããããã©ãŒãã³ã¹ã®åé¡ãé¿ããããã«å¹ççã«äœ¿çšããããšãéèŠã§ãã
- ããŒãèšå®ã«CSS倿°ã䜿çšããïŒ CSS倿°ã¯ãããŒãèšå®ããã®ä»ã®åçãªã¹ã¿ã€ãªã³ã°ã·ããªãªã«æé©ã§ããHTMLã³ãŒãã倿ŽããããšãªãããŠã§ããµã€ãã®å€èгã倿Žã§ããŸãã
- å¯èœãªéãJavaScriptããŒã¹ã®CSS倿°æŽæ°ãé¿ããïŒ JavaScriptã䜿çšããŠCSS倿°ãæŽæ°ããããšã¯ã§ããŸãããç¹ã«æŽæ°ãé »ç¹ãªå Žåãããã©ãŒãã³ã¹ã®ããã«ããã¯ã«ãªãå¯èœæ§ããããŸããå¯èœã§ããã°ãJavaScriptããŒã¹ã®æŽæ°ãé¿ããã³ã³ããã¯ãšãªãã¡ãã£ã¢ã¯ãšãªãªã©ã®CSSããŒã¹ã®ã¡ã«ããºã ã«é Œãããã«ããŠãã ããã
- CSSã®`calc()`颿°ã䜿çšããïŒ CSSã®`calc()`颿°ã䜿çšãããšãCSSå€å ã§èšç®ãå®è¡ã§ããŸããããã¯ãã³ã³ããã®å¯žæ³ã«åºã¥ããŠèŠçŽ ã®ãµã€ãºãå°åºããã®ã«åœ¹ç«ã¡ãŸããäŸãã°ã`calc()`ã䜿çšããŠãã³ã³ããã®å¹ ããããã£ã³ã°ãåŒããå€ã«åºã¥ããŠã«ãŒãã®å¹ ãèšç®ã§ããŸãã
5. ã³ã³ããã¯ãšãªã广çã«å®è£ ãã
ã³ã³ããã¯ãšãªã䜿çšãããšãã³ã³ããèŠçŽ ã®å¯žæ³ã«åºã¥ããŠç°ãªãã¹ã¿ã€ã«ãé©çšã§ããŸããããã¯ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããäœæããããã®åŒ·åãªæ©èœã§ãããããã©ãŒãã³ã¹ã®åé¡ãé¿ããããã«å¹æçã«äœ¿çšããããšãéèŠã§ãã
- ã³ã³ããã¯ãšãªãæ éã«äœ¿çšããïŒ åã¯ãšãªããªãŒããŒãããã远å ããå¯èœæ§ããããããããŸãã«ãå€ãã®ã³ã³ããã¯ãšãªã䜿çšããããšã¯é¿ããŠãã ãããå¿ èŠãªå Žåã«ã®ã¿ã³ã³ããã¯ãšãªã䜿çšããå¯èœãªéãã¯ãšãªãçµ±åããããã«ããŠãã ããã
- ã³ã³ããã¯ãšãªã®æ¡ä»¶ãæé©åããïŒ ã³ã³ããã¯ãšãªã®æ¡ä»¶ãã§ããã ãã·ã³ãã«ã«ä¿ã¡ãŸããè€éãªæ¡ä»¶ã¯è©äŸ¡ãé ããªãå¯èœæ§ããããŸãã
- ããªãã£ã«ã䜿çšããåã«ããã©ãŒãã³ã¹ãèæ ®ããïŒ å€ãã®éçºè ã¯ãå€ããã©ãŠã¶ã§ã³ã³ããã¯ãšãªæ©èœãæäŸããããã«ããªãã£ã«ã«é Œã£ãŠããŸãããããããå€ãã®ããªãã£ã«ã¯éãJavaScriptãœãªã¥ãŒã·ã§ã³ã§ãããããã©ãŒãã³ã¹ãé«ããªãããšã«æ³šæããŠãã ãããããªãã£ã«ã培åºçã«ãã¹ãããå¯èœã§ããã°ä»£æ¿ã¢ãããŒããæ€èšããŠãã ããã
6. ãã£ãã·ã¥æŠç¥ã䜿çšãã
ãã£ãã·ã¥ã¯ããã©ãŠã¶ããµãŒããŒãããªãœãŒã¹ãååŸããå¿ èŠãããåæ°ãæžããããšã§ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã圹ç«ã€ãã£ãã·ã¥æŠç¥ãããã€ã玹ä»ããŸãïŒ
- ãã©ãŠã¶ãã£ãã·ã¥ïŒ CSSãã¡ã€ã«ãJavaScriptãã¡ã€ã«ãç»åãªã©ã®éçã¢ã»ããã«å¯ŸããŠé©åãªãã£ãã·ã¥ããããŒãèšå®ããããã«WebãµãŒããŒãæ§æããŸããããã«ããããã©ãŠã¶ã¯ãããã®ã¢ã»ããããã£ãã·ã¥ã§ããããã«ãªãããµãŒããŒãžã®ãªã¯ãšã¹ãæ°ãæžå°ããŸãã
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒïŒ CDNã䜿çšããŠããŠã§ããµã€ãã®ã¢ã»ãããäžçäžã®ãµãŒããŒã«é ä¿¡ããŸããããã«ãããããŸããŸãªå°ççãªå Žæã«ãããŠãŒã¶ãŒã®é å»¶ãæžå°ããèªã¿èŸŒã¿æéãæ¹åãããŸãã
- ãµãŒãã¹ã¯ãŒã«ãŒïŒ ãµãŒãã¹ã¯ãŒã«ãŒã䜿çšãããšããªãœãŒã¹ããã£ãã·ã¥ãããŠãŒã¶ãŒããªãã©ã€ã³ã®ãšãã§ããã£ãã·ã¥ããæäŸã§ããŸããããã«ãããç¹ã«ã¢ãã€ã«ããã€ã¹ã§ã®ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã
å®è·µçãªäŸãšã³ãŒãã¹ãããã
CSSã¢ã³ã«ãŒãµã€ãžã³ã°ã®ããã©ãŒãã³ã¹ãæé©åããæ¹æ³ã«ã€ããŠãããã€ãã®å®è·µçãªäŸãèŠãŠã¿ãŸãããã
äŸ1ïŒå¯žæ³æŽæ°ã®ãããŠã³ã¹
ãã®äŸã§ã¯ããããŠã³ã¹ã䜿çšããŠãã¢ã³ã«ãŒèŠçŽ ã®å¯žæ³ã«åºã¥ãCSS倿°ã®æŽæ°é »åºŠãå¶éããŸãã
function debounce(func, delay) {
let timeoutId;
return function(...args) {
clearTimeout(timeoutId);
timeoutId = setTimeout(() => {
func.apply(this, args);
}, delay);
};
}
const anchorElement = document.getElementById('anchor');
const anchoredElement = document.getElementById('anchored');
function updateAnchoredElement() {
const width = anchorElement.offsetWidth;
anchoredElement.style.setProperty('--anchor-width', `${width}px`);
}
const debouncedUpdate = debounce(updateAnchoredElement, 100);
window.addEventListener('resize', debouncedUpdate);
updateAnchoredElement(); // Initial update
ãã®ã³ãŒãã§ã¯ãdebounce颿°ãupdateAnchoredElement颿°ã100ããªç§ã®é
å»¶åŸã«ã®ã¿åŒã³åºãããã«ããŸããããã«ãããã¢ã³ã«ãŒãããèŠçŽ ãé »ç¹ã«æŽæ°ãããã®ãé²ããã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ãåæžããŸãã
äŸ2ïŒ`contain`ããããã£ã®äœ¿çš
ããã§ã¯ãcontainããããã£ã䜿çšããŠã¬ã€ã¢ãŠãã®å€æŽãåé¢ããæ¹æ³ã®äŸã瀺ããŸãã
.anchor {
width: 50%;
height: 200px;
background-color: #eee;
}
.anchored {
contain: layout;
width: calc(var(--anchor-width) / 2);
height: 100px;
background-color: #ddd;
}
.anchoredèŠçŽ ã«contain: layout;ãèšå®ããããšã§ããã®ã¬ã€ã¢ãŠããžã®å€æŽãããŒãžã®ä»ã®éšåã«åœ±é¿ãäžããã®ãé²ããŸãã
äŸ3ïŒã³ã³ããã¯ãšãªã®æé©å
ãã®äŸã¯ãåçŽãªæ¡ä»¶ã䜿çšããäžèŠãªã¯ãšãªãé¿ããããšã§ã³ã³ããã¯ãšãªãæé©åããæ¹æ³ã瀺ããŠããŸãã
.container {
container-type: inline-size;
}
.card {
width: 100%;
}
@container (min-width: 400px) {
.card {
width: 50%;
}
}
@container (min-width: 800px) {
.card {
width: 33.33%;
}
}
ãã®äŸã§ã¯ãã³ã³ããã¯ãšãªã䜿çšããŠãã³ã³ããã®å¹ ã«åºã¥ããŠã«ãŒãã®å¹ ã調æŽããŸããæ¡ä»¶ã¯ã·ã³ãã«ã§çŽæ¥çã§ãããäžèŠãªè€éããé¿ããŠããŸãã
ãã¹ããšã¢ãã¿ãªã³ã°
æé©åã¯ç¶ç¶çãªããã»ã¹ã§ããæé©åãã¯ããã¯ãå®è£ ããåŸã¯ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããã¹ãããã³ã¢ãã¿ãªã³ã°ããŠã倿Žãå®éã«ããã©ãŒãã³ã¹ãåäžãããŠããããšã確èªããããšãéèŠã§ãããã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠãã¬ã€ã¢ãŠãæéãã¬ã³ããªã³ã°æéããã®ä»ã®ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã枬å®ããŸããããã©ãŒãã³ã¹ã¢ãã¿ãªã³ã°ããŒã«ãèšå®ããŠãæéã®çµéãšãšãã«ããã©ãŒãã³ã¹ã远跡ãããªã°ã¬ãã·ã§ã³ãç¹å®ããŸãã
çµè«
CSSã¢ã³ã«ãŒãµã€ãžã³ã°ã¯ãã¬ã¹ãã³ã·ãã§åçãªã¬ã€ã¢ãŠããäœæããããã®åŒ·åãªããŒã«ãæäŸããŸããããããæœåšçãªããã©ãŒãã³ã¹ãžã®åœ±é¿ãçè§£ããã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ãæå°éã«æããã¬ã³ããªã³ã°é床ãåäžãããããã®æé©åãã¯ããã¯ãé©çšããããšãéèŠã§ãããã®èšäºã§æŠèª¬ããæŠç¥ã«åŸãããšã§ãè€éãªã¢ã³ã«ãŒãµã€ãžã³ã°ã®ã·ããªãªã§ãã£ãŠãããŠã§ããµã€ããã¹ã ãŒãºã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããããã«ããããšãã§ããŸããæé©åã®åãçµã¿ã广çã§ããããšã確èªããããã«ãåžžã«ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããã¹ãããã¢ãã¿ãªã³ã°ããããšãå¿ããªãã§ãã ããã
ãããã®æŠç¥ãåãå ¥ããããšã§ãéçºè ã¯ããŸããŸãªç»é¢ãµã€ãºãããã€ã¹ã«ã·ãŒã ã¬ã¹ã«é©å¿ãããããã¬ã¹ãã³ã·ãã§ãããã©ãŒãã³ã¹ãé«ãããŠãŒã¶ãŒãã¬ã³ããªãŒãªãŠã§ããµã€ããäœæã§ããŸããéèŠãªã®ã¯ãCSSã¢ã³ã«ãŒãµã€ãžã³ã°ã®æ ¹æ¬çãªã¡ã«ããºã ãçè§£ããæé©åãã¯ããã¯ãæŠç¥çã«é©çšããããšã§ãã