![](https://habrastorage.org/web/91c/c91/3fe/91cc913fe47641459792318d3aa9c063.jpg)
ãã ããWebéçºãé²ãã«ã€ããŠãCSSã«å¯Ÿãã軜èãªæ 床ã¯éå»ã®ãã®ã«ãªããŸãã ãªããšãèšããªãå¥åŠãªããšã«çŽé¢ãããšãCSSãã©ã®ããã«æ©èœãããããã®å¥¥åºã§äœãè¡ãããŠããããæ£ç¢ºã«æ³åããããšãã§ããªãããšã«æ°ä»ãã§ãããã 䌌ããããªããšãç§ã«ããããŸããã å匷ããŠããæåã®æ°å¹Žãç§ã¯ãã«ãµã€ã¯ã«ã®JavaScriptéçºã«åŸäºããæã«ã¯CSSã«è§ŠããŸããã ç§ã¯ãã€ãèªåã®ãã³ãJavaScriptã§ãããšèããŠããŸããã
ããšãã°ã JavaScript Jabberã«é¢ããè°è«ã«åå ããŸããã æšå¹Žãç§ã¯ããã³ããšã³ãã«çŠç¹ãåãããããšã«ããŸãããããã®ãšããããäŸãã°ãJSã³ãŒããšåãæ¹æ³ã§ã¹ã¿ã€ã«ã·ãŒãããããã°ããããšãã§ããªãããšã«æ°ä»ããŸããã
CSSã¯ãã°ãã°åè«ãèšã£ãŠããŸãããååã«çå£ã«ç解ããŠç解ããããšãã人ã¯ã»ãšãã©ããŸããã ãã©ãŠã¶ãCSSãåŠçããæ¹æ³ãèããŠãåé¡ã«çŽé¢ãããšãã«æå³çã«ãšã©ãŒãæ€çŽ¢ããã®ã¯èª°ã§ããïŒ ä»£ããã«ãStack Overflowã§å©çšå¯èœãªæåã®åçããã³ãŒããååŸããããŸããŸãªçš®é¡ã®ãããã³ã°ã軜daããªãã§ãã ããããŸãã¯ãåã«åé¡ãç¡èŠããŠãã ããã
ãã®çµæããã©ãŠã¶ãã¹ã¿ã€ã«ã§å¥åŠãªããšããããšããéçºè ã¯ããŸãã«ãé »ç¹ã«æãããããã ãã§ãã CSSã¯é»éè¡ã«äŒŒãŠãããšèããæã§ãã ãã ããããã°ã©ããŒã¯ã³ã³ãã¥ãŒã¿ãŒã人éãäœæããã³ãã³ãã解æããã³å®è¡ãããã·ã³ã§ããããšãç¥ã£ãŠããŸãããã®ç¹ã§ãCSSã¯ç§ãã¡ã®ãæ°ã«å ¥ãã®JSãšéãã¯ãããŸããã ãããããªããCSSã¯ææ矩ãã€çç£çã«èªèããã䜿çšãããŸãã
CSSã®å éšã¡ã«ããºã ã®ç¥èã¯ãããŸããŸãªç¶æ³ã§åœ¹ç«ã¡ãŸãã ããšãã°ãæ·±å»ãªãããã°ãšWebããŒãžã®ããã©ãŒãã³ã¹ã®æé©åã å€ãã®å Žåã圌ãã¯CSSã«ã€ããŠè©±ãããæžããããããšããäžè¬çãªåé¡ã®è§£æ±ºã«çŠç¹ãåãããŸãã ãããã©ã®ããã«æ©èœãããã«ã€ããŠã話ããããšæããŸãã
DOMãšCSSOM
ãŸãããã©ãŠã¶ã«ã¯ãä»ã®ãµãã·ã¹ãã ã®äžã§ãJavaScriptãšã³ãžã³ãšã¬ã³ããªã³ã°ãšã³ãžã³ãããããšãç解ããããšãéèŠã§ãã ãã®å ŽåãåŸè ã«èå³ããããŸãã ããšãã°ãWebKitïŒSafariïŒãBlinkïŒChromeïŒãGeckoïŒFirefoxïŒãããã³Trident / EdgeHTMLïŒIE / EdgeïŒã«é¢é£ãã詳现ã«ã€ããŠèª¬æããŸãã
ãã©ãŠã¶ã¯ãWebããŒãžã衚瀺ããããã»ã¹ã§ãããã¥ã¡ã³ããªããžã§ã¯ãã¢ãã«ïŒDOMãããã¥ã¡ã³ããªããžã§ã¯ãã¢ãã«ïŒããã³ã¹ã¿ã€ã«ã·ãŒãã®ãªããžã§ã¯ãã¢ãã«ïŒCSSOMãCSSãªããžã§ã¯ãã¢ãã«ïŒã®æ§ç¯ã«ã€ãªããäžé£ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã ç°¡ç¥åããããã®äžé£ã®ã¢ã¯ã·ã§ã³ã¯ã次ã®ããã«è¡šãããšãã§ããŸãã
- å€æ ïŒHTMLããã³CSSãã€ãããã£ã¹ã¯ããèªã¿åããããããã¯ãŒã¯ããããŠã³ããŒãããŸãã
- ããŒã¯ã³å ïŒå
¥åããŒã¿ã¹ããªãŒã ããã©ã°ã¡ã³ãã«åå²ãïŒäŸïŒéå§ã¿ã°ãçµäºã¿ã°ãå±æ§åãå±æ§å€ïŒãã¹ããŒã¹ãæ¹è¡ãªã©ã®äžèŠãªæåãåé€ããŸãã
- Lexing ïŒãã®æé ã¯ããŒã¯ã³åã«äŒŒãŠããŸãããããã§ã¯åããŒã¯ã³ã®ã¿ã€ãã決å®ãããŸãïŒããšãã°ããã®ããŒã¯ã³ã¯æ°å€ã§ãããæååãªãã©ã«ã§ãããå¥ã®ããŒã¯ã³ã¯çå€æŒç®åã§ãïŒã
- 解æ ïŒããã§ã¯ãã·ã¹ãã ã¯åå¥è§£æåŸã«ããŒã¯ã³ã®ã¹ããªãŒã ãåãå ¥ããç¹å®ã®ææ³ã䜿çšããŠããŒã¯ã³ã解éãããã®ã¹ããªãŒã ãæœè±¡æ§æããªãŒã«å€æããŸãã
CSSããã³HTMLã®ãã®ãããªããªãŒæ§é ãäœæããåŸãã¬ã³ããªã³ã°ãšã³ãžã³ã¯ããããã«åºã¥ããŠãã¬ã³ããªã³ã°ããªãŒãšåŒã°ãããã®ã圢æããŸãã ããã¯ãããã¥ã¡ã³ãã¬ã€ã¢ãŠããäœæããããã»ã¹ã®äžéšã§ãã
ã¬ã³ããªã³ã°ããªãŒã¯ãããã¥ã¡ã³ãã®èŠèŠçè¡šçŸã®ã¢ãã«ã§ãããããã¥ã¡ã³ãã®ã°ã©ãã£ãã¯èŠçŽ ãæ£ããé åºã§è¡šç€ºã§ããŸãã ã¬ã³ããªã³ã°ããªãŒã®æ§ç¯ã¯ã次ã®ã¢ã«ãŽãªãºã ã«åŸã£ãŠå®è¡ãããŸãã
- DOMããªãŒã®ã«ãŒãããéå§ããŠã衚瀺ãããŠãããã¹ãŠã®ããŒãããã©ããŒã¹ããŸãã
- é衚瀺ã®ããŒããã¹ãããããŸãã
- 衚瀺ãããŠããããŒãããšã«ãCSSOMã§å¯Ÿå¿ããã«ãŒã«ãèŠã€ããŠé©çšããŸãã
- ã³ã³ãã³ãããã³ã¹ã¿ã€ã«çšã«èšç®ãããå¯èŠããŒããçæããŸãã
- æåŸã«ãç»é¢ã«è¡šç€ºããããã¹ãŠã®ããŒãžèŠçŽ ã«ã€ããŠãã³ã³ãã³ããšã¹ã¿ã€ã«ã«é¢ããæ
å ±ã®äž¡æ¹ãå«ãã¬ã³ããªã³ã°ããªãŒãäœæããŸãã
CSSOMã¯ã¬ã³ããŒããªãŒã«å€§ããªåœ±é¿ãäžããããšãã§ããŸãããDOMããªãŒã«ã¯åœ±é¿ããŸããã
ã¬ã³ããªã³ã°
ã¬ã³ããªã³ã°ããªãŒãšããŒãžã¬ã€ã¢ãŠããäœæãããåŸããã©ãŠã¶ã¯ç»é¢äžã«èŠçŽ ã®è¡šç€ºãéå§ã§ããŸãã ãããããã®ããã»ã¹ã®å€èŠ³ã§ãã
- ããŒãžã¬ã€ã¢ãŠããäœæããŸã ã ãã®ã¹ãããã§ã¯ãèŠçŽ ã®ãµã€ãºãšç»é¢äžã®èŠçŽ ã®äœçœ®ãèšç®ããŸãã 芪èŠçŽ ã¯åèŠçŽ ã«äœçšã§ããŸãã æã
ãåäŸã¯èŠªã«åœ±é¿ãäžããããšãã§ããŸãã
- ã¬ã³ããªã³ã° ã ãã®æ®µéã§ãã¬ã³ããªã³ã°ããªãŒã¯ç»åã«å€æãããŸããããã¯ãç»é¢ã«è¡šç€ºããããã®ã®åºç€ãšãªããŸãã ããã«ã¯ãããã¹ããè²ãç»åãå¢çç·ã圱ã®åºåãå«ãŸããŸãã éåžžãã¬ã³ããªã³ã°ã¯è€æ°ã®ã¬ã€ã€ãŒã§å®è¡ãããããŒãžã®JavaScriptã³ãŒããDOMã«åœ±é¿ããå ŽåãããŒãžãäœåºŠãåæç»ã§ããŸãã
- ã¬ã€ã€ãŒãå¹³åŠåããŸã ã ãã®æ®µéã§ãã¬ã€ã€ãŒãããŒãžãããŠæçµçãªç»åã圢æãããç»é¢ã«è¡šç€ºãããŸãã åæã«ãããŒãžèŠçŽ ã¯ç°ãªãã¬ã€ã€ãŒã«è¡šç€ºã§ãããããã¬ã€ã€ãŒãæ£ããé åºã§ãŸãšããå¿
èŠããããŸãã
ããŒãžã®ã¬ã³ããªã³ã°æéã¯ãã¬ã³ããªã³ã°ããªãŒã®æ©èœã«ãã£ãŠç°ãªããŸãã ããã«ãèŠçŽ ã®å¹ ãšé«ãã倧ããã»ã©ãã¬ã³ããªã³ã°æéãé·ããªããŸãã
ããŸããŸãªå¹æãè¿œå ãããšãããŒãžã®ã¬ã³ããªã³ã°æéãé·ããªãå¯èœæ§ããããŸãã èŠçŽ ã®ã°ã©ãã£ãã¯è¡šçŸã¯ããªãŒããŒã¬ã€ã³ã³ããã¹ãã«åŸã£ãŠãèŠçŽ ãçžäºã«é¢é£ããŠé 眮ãããŠããé åºã§åºåãããŸãã æåã«ããããã®èŠçŽ ã¯äžã«é 眮ããã次ã«-äžã«é 眮ãããŸãã åŸã§ã
z-index
ããããã£ã«ã€ããŠèª¬æããŸãããããã«ã€ããŠè©³ãã説æããŸãã èŠèŠæ å ±ãããç解ããŠãã人ã®ããã«ãããŒãžã®ã°ã©ãã£ã«ã«è¡šçŸãäœæããããã»ã¹ã®åªãããã¢ã以äžã«ç€ºããŸãã
ãã©ãŠã¶ã®ããŒãžã®ã°ã©ãã£ãã¯è¡šçŸã®åºåã«ã€ããŠã¯ãã°ã©ãã£ãã¯ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãããèšåãããŸãã ãã®ãããªå Žåãéåžžã¯å±€ã®çž®å°ã®å éãæããŸãã ãããªã«ãŒãã®ãªãœãŒã¹ã䜿çšããŠãWebããŒãžã®ã³ã³ãã³ãã®åºåãæºåããããšã«ã€ããŠè©±ããŠããã
ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšããŠã¬ã€ã€ãŒãå¹³åŠåãããšãããã»ããµã®ã¿ã䜿çšããåŸæ¥ã®ã¢ãããŒããšæ¯èŒããŠãã¬ã³ããªã³ã°é床ãå€§å¹ ã«åäžããŸãã ããããã¹ãŠã«é¢é£ããŠã
will-change
CSSããããã£ãæãåºããããããŸãããCSSããããã£ãäžæã«äœ¿çšãããšãããŒãžã®åºåãé«éåãããŸãã ããšãã°ãCSSå€æã䜿çšããå Žåã
will-change
ããããã£ã䜿çšãããšãDOMèŠçŽ ãè¿ãå°æ¥ã«å€æãããããšããã©ãŠã¶ãŒã«äŒããããšãã§ããŸãã
will-change: transform
ããã«èŠããŸãã ããã«ãããGPUã¯ã¬ã€ã€ãŒã®ã¬ã³ããªã³ã°ãšå¹³åŠåã®æäœã転éã§ããããã«ãªããå€ãã®ã¢ãã¡ãŒã·ã§ã³èŠçŽ ãå«ãããŒãžã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã
will-change: scroll-position
ã
will-change: contents
ã
will-change: opacity
ã
will-change: left, top
ã䜿çšããŠã
will-change: scroll-position
ããã©ãŒãã³ã¹ãæ¹åã§ããŸãã
äžéšã®ããããã£ã§ã¯ããŒãžã¬ã€ã¢ãŠããå€æŽãããä»ã®ããããã£ã§ã¯åæç»ããã§ããªãããšãç解ããããšãéèŠã§ãã ãã¡ãããããã©ãŒãã³ã¹ã®èŠ³ç¹ããã¯ãã¬ã€ã¢ãŠããå€æŽããã«ããŒãžãåæç»ããã ãã§ååŸã§ãããšããè¯ãã§ãããã
ããšãã°ãèŠçŽ ã®è²ãå€æŽããŠãã¬ã€ã¢ãŠãã¯å€æŽããããèŠçŽ ã®åæç»ã®ã¿ãè¡ãããŸãã ãã ããèŠçŽ ã®äœçœ®ãå€æŽãããšãã¬ã€ã¢ãŠããå€æŽãããèŠçŽ èªäœããã®åãããã³å Žåã«ãã£ãŠã¯é¢é£ããèŠçŽ ãåæç»ãããŸãã DOMããŒããè¿œå ãããšãã¬ã€ã¢ãŠãã®åã«ãŠã³ããšããŒãžã®åæç»ãè¡ãããŸãã HTMLèŠçŽ ã®ãã©ã³ããµã€ãºã倧ãããããªã©ã®å€§ããªå€æŽã«ãããã¬ã€ã¢ãŠããå€æŽãããã¬ã³ããªã³ã°ããªãŒå šäœãåæç»ãããŸãã
ããªããç§ã®ãããªäººãªããããããCSSOMãããDOMã«ç²ŸéããŠããã®ã§ãCSSOMã«æ³šæãåããŸãããã ããã©ã«ãã§ã¯ãCSSã¯ã¬ã³ããªã³ã°ããããã¯ãããªãœãŒã¹ãšããŠæ±ãããããšã«æ³šæããããšãéèŠã§ãã ããã¯ãCSSOMã®æºåãã§ãããŸã§ãã©ãŠã¶ãã¬ã³ããªã³ã°ããªãããšãæå³ããŸãã
ããã«ãDOMãšCSSOMã®éã«å®å šãªå¯Ÿå¿é¢ä¿ããªãããšãç解ããå¿ èŠããããŸãã ãããã®æ§é ã®éãã¯ãDOMã«äžå¯èŠèŠçŽ ãã¹ã¯ãªãããã¡ã¿ã¿ã°ãç»é¢ã«è¡šç€ºãããªããµãŒãã¹æ å ±ãå«ãã¿ã°ãªã©ãååšããããã§ãã CSSOMãæ§ç¯ããå ŽåãããŒãžã®ã°ã©ãã£ãã¯è¡šç€ºã«ã¯åœ±é¿ããªããããããããã¹ãŠã¯èæ ®ãããŸããã
DOMãšCSSOMã®ãã1ã€ã®éãã¯ãCSSãã³ã³ããã¹ãã«äŸåããªãææ³ã解æããããšã§ãã ã€ãŸããHTMLã解æããŠDOMãäœæããå Žåã®ããã«ãCSSãåãå ¥ãå¯èœãªåœ¢åŒã«ããã¬ã³ããªã³ã°ãšã³ãžã³ã«ã¯ã³ãŒãããããŸããã
HTMLèŠçŽ ã圢æããæåãåæãããšãããã©ãŠã¶ã¯åšå²ã®æåãèæ ®ããããšãäœåãªããããŸããããŒã¯ã¢ããã®äžéšã®èŠçŽ ãæ¬ èœããŠããå¯èœæ§ããããããèšèªä»æ§ã ãã§ãªãããšã³ãžã³ãæšæž¬ããå¿ èŠããããŸããããŒãžã ãããã£ãŠãããè€éãªããŒã¿åŠçã¢ã«ãŽãªãºã ã®å¿ èŠæ§ã
ã¬ã³ããªã³ã°ã«ã€ããŠã®è°è«ãçµããŠããµãŒããŒã«ä¿åãããäžé£ã®ãã€ãããããŒã¿æ§é ãžã®WebããŒãžã®ãã¹ãç°¡åã«æ€èšããããã«åºã¥ããŠãã®ã°ã©ãã£ã«ã«è¡šçŸã圢æãããŸãã
ãã©ãŠã¶ãŒã¯ããµãŒããŒããããŒãžãèŠæ±ããHTTPèŠæ±ãäœæããŸãã WebãµãŒããŒã¯å¿çãéä¿¡ããŸãã ãã©ãŠã¶ã¯ããµãŒããŒããåãåã£ãããŒã¿ãããŒã¯ã³ã«å€æããããŒã¯ã³ã¯DOMããªãŒãšCSSOMããªãŒã®ããŒãã«å€æãããŸãã ãããã®ããªãŒã®æºåãã§ããããã¬ã³ããªã³ã°ããªãŒãæ§ç¯ãããããã«åºã¥ããŠããŒãžã¬ã€ã¢ãŠãã圢æãããèŠçŽ ã®ã¬ã€ã€ãŒããšã®æç»ãšã¬ã€ã€ãŒã®ãã©ããåãå®è¡ãããŸãã çµæã¯ãç»é¢ã«è¡šç€ºãããWebããŒãžã§ãã
ã»ã¬ã¯ã¿ãŒã®ç¹ç°æ§
ãã©ãŠã¶ã®ä»çµã¿ãç解ãããšããã§ãéçºè ãæ··ä¹±ããæãäžè¬çãªãã€ã³ããããã€ãèŠãŠã¿ãŸãããã ãŸããã»ã¬ã¯ã¿ãŒã®ç¹ç°æ§ã«ã€ããŠè©±ããŸãããã
éåžžã«åçŽåãããã»ã¬ã¯ã¿ãŒã®ç¹ç°æ§ã¯ãã«ã¹ã±ãŒãCSSã«ãŒã«ãæ£ããé åºã§é©çšããããšãæå³ããŸãã ãã ããCSSã»ã¬ã¯ã¿ãŒã䜿çšããŠã¿ã°ãéžæããã«ã¯å€ãã®æ¹æ³ãããããã©ãŠã¶ãŒã«ã¯ç¹å®ã®ã¿ã°ã«å²ãåœãŠãã¹ã¿ã€ã«ã決å®ããæ¹æ³ãå¿ èŠã§ãã ãã©ãŠã¶ãåæ§ã®æ±ºå®ãè¡ããåã»ã¬ã¯ã¿ã®ç¹ç°åºŠå€ãèšç®ããŸãã
ã»ã¬ã¯ã¿ãŒã®ç¹ç°æ§ã€ã³ãžã±ãŒã¿ãŒã®èšç®ã¯ãå€ãã®JavaScriptéçºè ã«ãšã£ãŠæ··ä¹±ãæããããããã«ã€ããŠè©³ãã説æããŸãã 次ã®äŸã䜿çšããŸãã ã¯ã©ã¹
container
æã€
div
ã¿ã°ããããŸãã å¥ã®
div
ãã®ã¿ã°ã«åã蟌ãŸãããã®
id
ã¯
main
ã§ãã
main
å ã«ã¯ãaã¿ã°ãå«ã
p
ã¿ã°ããããŸãã
<div class="container"> <div id="main"> <p> <a href="">Hello!</a> </p> </div> </div>
ããŠãçããèŠãã«ã以äžã®CSSãåæã
a
ã¿ã°å ã®ãªã³ã¯ããã¹ãã®è²ãèšã£ãŠã¿ãŠãã ããã
#main a { color: green; } pa { color: yellow; } .container #main a { color: pink; } div #main pa { color: orange; } a { color: red; }
ãã¶ãèµ€ïŒ ãããšãç·ïŒ ãã ãªã³ã¯ã¯ã1,1,1ã®ç¹ç°æ§å€ãæã€ãã³ã¯è²ã«ãªããŸãã æ®ãã®çµæã¯æ¬¡ã®ãšããã§ãã
-
div #main pa: 1,0,3
-
#main a: 1,0,1
-
pa: 2
-
a: 1
ãããã®æ°å€ãèŠã€ããã«ã¯ã次ã®èšç®ãå®è¡ããå¿ èŠããããŸãã
- æåã®çªå· ïŒIDã»ã¬ã¯ã¿ãŒã®æ°ã
- 2çªç®ã®çªå· ïŒã¯ã©ã¹ã»ã¬ã¯ã¿ãŒãå±æ§ã»ã¬ã¯ã¿ãŒïŒäŸïŒ
[type="text"]
ã[rel="nofollow"]
ïŒããã³æ¬äŒŒã¯ã©ã¹ïŒ:hover, :visited
ïŒã®æ°ã
- 3çªç®ã®æ°å€ ïŒã¿ã€ãã»ã¬ã¯ã¿ãŒãšç䌌èŠçŽ ã®æ°ïŒ
::before, ::after
ïŒ
ããšãã°ã次ã®ãããªã»ã¬ã¯ã¿ãŒãèŠãŠãã ããã
#header .navbar li a:visited
ãã®ç¹ç°æ§ã®å€ã¯1,2,2ã§ãã 1ã€ã®IDã1ã€ã®ã¯ã©ã¹ã1ã€ã®æ¬äŒŒã¯ã©ã¹ãããã³2ã€ã®èŠçŽ ã¿ã€ãã»ã¬ã¯ã¿ãŒïŒ
li
ããã³
a
ïŒããããŸãã ãã®å€ã¯ã1,2,2-122ã®ä»£ããã«ãã³ã³ãããªãããã«èªã¿åãããšãã§ããŸããã³ã³ãã¯ã3æ¡ã®10é²æ°ã§ã¯ãªãã3æ¡ã®æ°åãããããšã匷調ããããã®ãã®ã§ãã ããã¯ã0,1,13ã®ãããªçè«çã«å¯èœãªçµæã«ãšã£ãŠç¹ã«éèŠã§ãã ããã0113ã«æžãæãããšãå ã®ç¶æ ã«æ»ãæ¹æ³ãæ確ã«ãªããŸããã
èŠçŽ ã®é 眮
次ã«ãããžã·ã§ãã³ã°ã«ã€ããŠã話ããŸãã ãããŸã§èŠãŠããããã«ãèŠçŽ ã®é 眮ãšããŒãžã¬ã€ã¢ãŠãã®äœæã¯å¯æ¥ã«é¢é£ããŠããŸãã
ã¬ã€ã¢ãŠãã®æ§ç¯ã¯ãã¹ã¿ã€ã«ã®ã°ããŒãã«ãªå€æŽã®çµæãšããŠã¬ã³ããªã³ã°ããªãŒå šäœã«å¯ŸããŠããŸãã¯ããªãŒã®äžéšã®ã¿ã«å¯ŸããŠãå€æŽãåæç»ãå¿ èŠãªç¹å®ã®èŠçŽ ã«ã®ã¿åœ±é¿ããå Žåã«åŒã³åºãããšãã§ããååž°ããã»ã¹ã§ãã ã¬ã³ããªã³ã°ããªãŒã«ç®ãåããããã絶察é 眮ã䜿çšããŠããããšãæ³åããããšã§ãèå³æ·±ã芳å¯çµæãåŸãããŸãã ãã®ã¢ãããŒãã§ã¯ãããŒãžã¬ã€ã¢ãŠãã®æ§ç¯å ã®ãªããžã§ã¯ãã¯ãDOMããªãŒãšåãå Žæã®ã¬ã³ããªã³ã°ããªãŒã«é 眮ãããŸããã
ãã¬ãã¯ã¹ããã¯ã¹ãšãããŒãã®é·æãšçæã«ã€ããŠããèãããŸãã ãã¡ããããã¬ãã¯ã¹ããã¯ã¹ã¯ã䜿ããããã®èŠ³ç¹ãããåãèŠçŽ ã«é©çšãããšããã¬ãã¯ã¹ããã¯ã¹ã§ã®ã¬ã€ã¢ãŠãã¯çŽ3.5ããªç§ã§ã¬ã³ããªã³ã°ãããŸããããããŒãã§ã®ã¬ã€ã¢ãŠãã®ã¬ã³ããªã³ã°ã«ã¯çŽ14ããªç§ããããŸãã ãããã£ãŠãå°ãããéèŠãªè©³çŽ°ãèæ ®ããããã«ãJSéçºè ã¯CSSã®ç¥èãJavaScriptã®ç¥èãšåãè¯å¥œãªç¶æ ã«ä¿ã€ããšãçã«ããªã£ãŠããŸãã
Z-indexããããã£
æåŸã«ã
z-index
ããããã£ã«ã€ããŠã話ããŸãã äžèŠãããšäœã話ãããšã¯ãªãããã§ãã HTMLããã¥ã¡ã³ãã®åèŠçŽ ã¯ãä»ã®èŠçŽ ã®åãŸãã¯åŸãã«é 眮ã§ããŸãã ããã«ãããã¯é 眮ãããèŠçŽ ã«å¯ŸããŠã®ã¿æ©èœããŸãã äœçœ®ãæ瀺çã«æå®ãããŠããªãèŠçŽ ã«
z-index
ããããã£ãèšå®ããŠããäœãå€ãããŸããã
z-index
åé¡ãèŠã€ããŠä¿®æ£ããããã®éµã¯ããªãŒããŒã¬ã€ã³ã³ããã¹ãã®æŠå¿µãç解ããããšã§ãã ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¯ãåžžã«ãªãŒããŒã¬ã€ã³ã³ããã¹ãã®ã«ãŒãèŠçŽ ããå§ãŸããŸãã ãªãŒããŒã¬ã€ã³ã³ããã¹ãã¯ãã¢ãã¿ãŒã®åã®ãŠãŒã¶ãŒã«å¯ŸããŠãç¹ã«Z軞ã«æ²¿ã£ãŠã3次å 空éã«HTMLèŠçŽ ãé 眮ããæŠå¿µã§ãã ã€ãŸããå ±éã®èŠªãæã€èŠçŽ ã®ã°ã«ãŒãã§ãããZ軞ã«æ²¿ã£ãŠäžç·ã«ãŠãŒã¶ãŒã«è¿ã¥ããããŠãŒã¶ãŒããé ããããŸãã
åãªãŒããŒã¬ã€ã³ã³ããã¹ãã«ã¯ãã«ãŒãèŠçŽ ãšããŠ1ã€ã®HTMLèŠçŽ ããããŸãã ããžã·ã§ãã³ã°ããããã£ãš
z-index
ããããã£ã䜿çšããªãå ŽåãèŠçŽ ã®çžäºäœçšã®ã«ãŒã«ã¯åçŽã§ãã èŠçŽ ã®ã¹ã¿ãã¯é ã¯ãHTMLã«è¡šç€ºãããé åºã«å¯Ÿå¿ããŠããŸãã
ãã ãã
z-index
以å€ã®ããããã£ã䜿çšããŠæ°ãããªãŒããŒã¬ã€ã³ã³ããã¹ããäœæã§ããŸãããããã§ã¯ãã¹ãŠãããè€éã«ãªããŸãã ãã®äžã«ã¯ããã®å€ã1ããå°ããå Žåã®
opacity
ããããã£ããã®ããããã£ã®å€ã
none
ãšç°ãªãå Žåã®
filter
ãããã³å€ã
normal
ã¯ãªã
mix-blend-mode
ããããŸãã å®éããããã®ããããã£ã¯æ°ãããªãŒããŒã¬ã€ã³ã³ããã¹ããäœæããŸãã 念ã®ããã«ããã¬ã³ãã¢ãŒãã§ã¯ãç¹å®ã®ã¬ã€ã€ãŒã®ãã¯ã»ã«ããã®ã¬ã€ã€ãŒã®äžã«ããã¬ã€ã€ãŒã®è¡šç€ºãã¯ã»ã«ãšçžäºäœçšããæ¹æ³ãæå®ã§ããããšãæãåºããŠãã ããã
ãŸãã
transform
ããããã£ã¯ã
none
ãšç°ãªãå Žåã«æ°ãããªãŒããŒã¬ã€ã³ã³ããã¹ããäœæããŸãã ããšãã°ã
scale(1)
ããã³
translate3d(0,0,0)
ã ç¹°ãè¿ããŸããã
scale
ããããã£ã䜿çšããŠèŠçŽ ã®ãµã€ãºãå€æŽãã
translate3d
ã䜿çšãããšãCSSãã©ã³ãžã·ã§ã³ã«GPUã䜿çšããŠãã¢ãã¡ãŒã·ã§ã³ã®å質ãåäžãããããšãã§ããŸãã
ãŸãšã
ãã®è³æãCSSããã¹ã¿ãŒããããã®æåã®ã¹ãããã§ãã£ãå Žåãã¹ã¿ã€ã«ã®åé¡ãèªåã§è§£æ±ºããæ¹æ³ãããã«åŠãã§ããã ããã°å¹žãã§ãã ãŸãã ããã§ã¯ãç¥èãæ·±ããåºããã®ã«åœ¹ç«ã€è¿œå è³æã®ãªã¹ããèŠã€ããããšãã§ããŸãã
芪æãªãèªè ïŒ CSSãããç¥ã£ãŠããå Žåã¯ãCSSãã©ã®ããã«æ±ã£ããæããŠãã ããã ããªãã®çµéšãå ±æããŠãã ããã å€ãã®äººã«åœ¹ç«ã€ãšç¢ºä¿¡ããŠããŸãã