CSS @layerã®åãæ¢æ±ããã«ã¹ã±ãŒãé ãå¶åŸ¡ããã¹ã¿ã€ã«ã·ãŒãã®æ§æãæ¹åããä¿å®æ§ãåäžãããŸãã广çãªã«ã¹ã±ãŒãã¬ã€ã€ãŒç®¡çã®ããã®å®è·µçãªãã¯ããã¯ãšãã¹ããã©ã¯ãã£ã¹ãåŠã³ãŸãããã
CSS @layer: ã¹ã±ãŒã©ãã«ã§ä¿å®æ§ã®é«ãã¹ã¿ã€ã«ã·ãŒãã®ããã®ã«ã¹ã±ãŒãã¬ã€ã€ãŒç®¡çããã¹ã¿ãŒãã
CSSã«ã¹ã±ãŒãã¯ãè€æ°ã®ç«¶åããã«ãŒã«ãååšããå Žåã«ã©ã®ã¹ã¿ã€ã«ãèŠçŽ ã«é©çšãããããæ±ºå®ããåºæ¬çãªã¡ã«ããºã ã§ããã«ã¹ã±ãŒãã¯ã¹ã¿ã€ã«ã®ç«¶åã解決ããèªç¶ãªæ¹æ³ãæäŸããŸãããè€éãªã¹ã¿ã€ã«ã·ãŒãã¯ãµã€ãºãšè€éããå¢ãã«ã€ããŠç®¡çãšä¿å®ãå°é£ã«ãªãããšããããŸããCSS @layerããŸãã¯ã«ã¹ã±ãŒãã¬ã€ã€ãŒã¯ãã«ã¹ã±ãŒããå¶åŸ¡ããããã®åŒ·åãªæ°ããæ¹æ³ãå°å ¥ããCSSã«ãŒã«ãæŽçãåªå é äœãä»ããããã®æ§é åãããã¢ãããŒããæäŸããŸãã
CSS @layerãšã¯ïŒ
CSS @layerã䜿çšãããšãCSSã«ã¹ã±ãŒãå ã«ååä»ãã®ã¬ã€ã€ãŒãäœæã§ããŸããåã¬ã€ã€ãŒã¯äžé£ã®ã¹ã¿ã€ã«ã®ã³ã³ãããšããŠæ©èœãããããã®ã¬ã€ã€ãŒãå®çŸ©ãããé åºãã«ã¹ã±ãŒãã«ãããåªå é äœã決å®ããŸããã€ãŸãããœãŒã¹ã®é åºã詳现床ã«é¢ä¿ãªããã©ã®ã¹ã¿ã€ã«ãä»ã®ã¹ã¿ã€ã«ãããåªå ãããã¹ãããæç€ºçã«å®çŸ©ã§ããŸãã
ã¬ã€ã€ãŒãåå¥ã®ã¹ã¿ã€ã«ã«ãŒã«ã®ã¹ã¿ãã¯ãšèããŠãã ããããã©ãŠã¶ãèŠçŽ ã®ã¹ã¿ã€ã«ã決å®ããå¿ èŠãããå Žåãæãåªå 床ã®é«ãã¬ã€ã€ãŒããéå§ããäžèŽããã«ãŒã«ãèŠã€ãããŸã§ã¹ã¿ãã¯ãäžã«ç§»åããŸããåªå 床ã®é«ãã¬ã€ã€ãŒã®ã«ãŒã«ãåªå 床ã®äœãã¬ã€ã€ãŒã®ã«ãŒã«ãšç«¶åããå Žåãåªå 床ã®é«ãã¬ã€ã€ãŒã®ã«ãŒã«ãåã¡ãŸãã
ãªãCSS @layerã䜿çšããã®ãïŒ
CSS @layerã¯ãç¹ã«å€§èŠæš¡ã§è€éãªãããžã§ã¯ãã«ãããŠãCSSã¹ã¿ã€ã«ã·ãŒãã®ç®¡çãšä¿å®ã«ããã€ãã®å€§ããªå©ç¹ããããããŸãïŒ
- æ§æã®æ¹å: ã¬ã€ã€ãŒã䜿çšãããšãé¢é£ããã¹ã¿ã€ã«ãè«ççã«ã°ã«ãŒãåã§ããã¹ã¿ã€ã«ã·ãŒããããæ§é åãããçè§£ãããããªããŸããããŒã¹ã¹ã¿ã€ã«ãããŒãã¹ã¿ã€ã«ãããã³ã³ããŒãã³ãã¹ã¿ã€ã«ããŠãŒãã£ãªãã£ã¹ã¿ã€ã«ããåé¢ãããªã©ã§ããŸãã
- ä¿å®æ§ã®åäž: ã«ã¹ã±ãŒãé ãæç€ºçã«å¶åŸ¡ããããšã§ãæå³ããªãã¹ã¿ã€ã«ã®ç«¶åã®å¯èœæ§ãæžãããå¿ èŠã«å¿ããŠã¹ã¿ã€ã«ãäžæžãããããããŸããããã«ããããããã°ãç°¡çŽ åããããªã°ã¬ãã·ã§ã³ãå°å ¥ãããªã¹ã¯ãæžå°ããŸãã
- 詳现床å¶åŸ¡ã®åŒ·å: ã¬ã€ã€ãŒã¯ãåŸæ¥ã®CSSãããé«ãã¬ãã«ã®è©³çŽ°åºŠå¶åŸ¡ãæäŸããŸããã¬ã€ã€ãŒã䜿çšããŠã詳现床ã«é¢ä¿ãªãç¹å®ã®ã¹ã¿ã€ã«ãåžžã«åªå ãããããã«ããããšãã§ããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®åäž: ããŒã ã§äœæ¥ããå Žåãã¬ã€ã€ãŒã¯ç°ãªãéçºè ã®ã³ãŒãéã«æç¢ºãªå¢çãå®çŸ©ããã®ã«åœ¹ç«ã¡ãç«¶åã®ãªã¹ã¯ãæžãããã³ã©ãã¬ãŒã·ã§ã³ãæ¹åããŸããäŸãã°ãäžäººã®éçºè ãããŒã¹ã¹ã¿ã€ã«ããå¥ã®éçºè ãããŒãã¹ã¿ã€ã«ãæ åœããããšãã§ããŸãã
- ããŒãèšå®ã®ç°¡çŽ å: ã¬ã€ã€ãŒã«ãããããŒãèšå®ã·ã¹ãã ã®å®è£ ã容æã«ãªããŸããå ±éã®ã¹ã¿ã€ã«ãæã€ããŒã¹ã¬ã€ã€ãŒãå®çŸ©ããã¢ããªã±ãŒã·ã§ã³ã®ã«ãã¯ã¢ã³ããã£ãŒã«ã倿Žããããã«ç¹å®ã®ã¹ã¿ã€ã«ãäžæžãããå¥ã®ããŒãã¬ã€ã€ãŒãäœæã§ããŸãã
CSS @layerã®äœ¿ç𿹿³
CSS @layerã®äœ¿çšã¯ç°¡åã§ãã@layer
ã¢ããã«ãŒã«ã«ç¶ããŠã¬ã€ã€ãŒåãæå®ããŠã¬ã€ã€ãŒãå®çŸ©ããŸãããã®åŸãlayer()
颿°ã䜿çšããŠã¹ã¿ã€ã«ãã¬ã€ã€ãŒã«ã€ã³ããŒããããã@layer
ãããã¯å
ã§çŽæ¥ã¹ã¿ã€ã«ãå®çŸ©ãããã§ããŸãã
ã¬ã€ã€ãŒã®å®çŸ©
ã¬ã€ã€ãŒãå®çŸ©ããããã®åºæ¬çãªæ§æã¯æ¬¡ã®ãšããã§ãïŒ
@layer <layer-name>;
è€æ°ã®ã¬ã€ã€ãŒãå®çŸ©ã§ããŸãïŒ
@layer base;
@layer components;
@layer utilities;
ã¬ã€ã€ãŒãå®çŸ©ããé åºã¯éåžžã«éèŠã§ããæåã«å®çŸ©ãããã¬ã€ã€ãŒãæãåªå 床ãäœããæåŸã«å®çŸ©ãããã¬ã€ã€ãŒãæãåªå 床ãé«ããªããŸãã
ã¬ã€ã€ãŒãžã®ã¹ã¿ã€ã«ã®ã€ã³ããŒã
@import
æå
ã®layer()
颿°ã䜿çšããŠãã¬ã€ã€ãŒã«ã¹ã¿ã€ã«ãã€ã³ããŒãã§ããŸãïŒ
@import url("base.css") layer(base);
ããã«ãããbase.css
ã®ã¹ã¿ã€ã«ãbase
ã¬ã€ã€ãŒã«ã€ã³ããŒããããŸãã
ã¬ã€ã€ãŒå ã§ã®ã¹ã¿ã€ã«ã®çŽæ¥å®çŸ©
@layer
ãããã¯å
ã§çŽæ¥ã¹ã¿ã€ã«ãå®çŸ©ããããšãã§ããŸãïŒ
@layer components {
.button {
background-color: blue;
color: white;
padding: 10px 20px;
}
}
ããã«ããã.button
ã¯ã©ã¹ã®ã¹ã¿ã€ã«ãcomponents
ã¬ã€ã€ãŒå
ã«å®çŸ©ãããŸãã
ã¬ã€ã€ãŒã®é åºãšåªå é äœ
ã¬ã€ã€ãŒãå®çŸ©ãããé åºãããã®åªå é äœã決å®ããŸããæ¬¡ã®äŸãèããŠã¿ãŸãããïŒ
@layer base;
@layer components;
@layer utilities;
@layer base {
body {
font-family: sans-serif;
background-color: #f0f0f0;
}
}
@layer components {
.button {
background-color: blue;
color: white;
padding: 10px 20px;
}
}
@layer utilities {
.margin-top-20 {
margin-top: 20px;
}
}
ãã®äŸã§ã¯ãutilities
ã¬ã€ã€ãŒãæãåªå
床ãé«ããæ¬¡ã«components
ããããŠbase
ãšç¶ããŸããããã¯ãutilities
ã¬ã€ã€ãŒã®ã¹ã¿ã€ã«ã«ãŒã«ãcomponents
ãŸãã¯base
ã¬ã€ã€ãŒã®ã«ãŒã«ãšç«¶åããå Žåãutilities
ã®ã«ãŒã«ãåªå
ãããããšãæå³ããŸãã
ã¬ã€ã€ãŒã®é åºå€æŽ
@layer
ã¢ããã«ãŒã«ã«ç¶ããŠåžæã®é åºã§ã¬ã€ã€ãŒåãæå®ããããšã§ãã¬ã€ã€ãŒã®é åºã倿Žã§ããŸãïŒ
@layer utilities, components, base;
ããã«ããã¬ã€ã€ãŒã®é åºã倿Žãããutilities
ãæãåªå
床ãäœããcomponents
ãäžéãbase
ãæãåªå
床ãé«ããªããŸãã
CSS @layerã®å®çšäŸ
以äžã«ãCSS @layerã䜿çšããŠã¹ã¿ã€ã«ã·ãŒããæŽçããã³ç®¡çããæ¹æ³ã«é¢ããããã€ãã®å®çšçãªäŸã瀺ããŸãïŒ
äŸ1ïŒããŒã¹ã¹ã¿ã€ã«ãšããŒãã¹ã¿ã€ã«ã®åé¢
ã¬ã€ã€ãŒã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®åºæ¬çãªã«ãã¯ã¢ã³ããã£ãŒã«ãå®çŸ©ããããŒã¹ã¹ã¿ã€ã«ãšãç°ãªããã©ã³ãããŠãŒã¶ãŒã®å¥œã¿ã«åãããŠå€èгãã«ã¹ã¿ãã€ãºã§ããããŒãã¹ã¿ã€ã«ãåé¢ã§ããŸãã
@layer base;
@layer theme;
@layer base {
body {
font-family: sans-serif;
font-size: 16px;
color: #333;
}
h1 {
font-size: 2em;
font-weight: bold;
}
}
@layer theme {
body {
background-color: #fff;
}
h1 {
color: blue;
}
}
ãã®äŸã§ã¯ãbase
ã¬ã€ã€ãŒãæ¬æãšèŠåºãã®ããã©ã«ãã®ãã©ã³ããã¡ããªãŒããã©ã³ããµã€ãºãè²ãå®çŸ©ããŸããtheme
ã¬ã€ã€ãŒã¯æ¬æã®èæ¯è²ãšèŠåºãã®è²ãäžæžãããŸããããã«ãããtheme
ã¬ã€ã€ãŒã®ã¹ã¿ã€ã«ã倿Žããã ãã§ãç°¡åã«ç°ãªãããŒãã«åãæ¿ããããšãã§ããŸãã
äŸ2ïŒã³ã³ããŒãã³ãã¹ã¿ã€ã«ã®æŽç
ã¬ã€ã€ãŒã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªã³ã³ããŒãã³ãã®ã¹ã¿ã€ã«ãæŽçã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåã«åœ±é¿ãäžããããšãªããç¹å®ã®ã³ã³ããŒãã³ãã®ã¹ã¿ã€ã«ãèŠã€ããŠå€æŽããããšã容æã«ãªããŸãã
@layer reset;
@layer typography;
@layer layout;
@layer components;
@layer utilities;
@layer reset { /* æ£èŠåã¹ã¿ã€ã« */
}
@layer typography { /* ãã©ã³ãå®çŸ©ãèŠåºããæ®µèœã¹ã¿ã€ã« */
}
@layer layout { /* ã°ãªããã·ã¹ãã ãã³ã³ãã */
}
@layer components {
.button {
background-color: #4CAF50;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
cursor: pointer;
}
.card {
border: 1px solid #ccc;
padding: 20px;
margin-bottom: 10px;
}
}
@layer utilities {
.margin-top-20 {
margin-top: 20px;
}
}
ãã®äŸã§ã¯ãã¹ã¿ã€ã«ããªã»ãããã¿ã€ãã°ã©ãã£ãã¬ã€ã¢ãŠããã³ã³ããŒãã³ãããŠãŒãã£ãªãã£ã®ã¬ã€ã€ãŒã«åé¢ããŠããŸããããã«ãããç¹å®ã®ã³ã³ããŒãã³ãããŠãŒãã£ãªãã£ã¯ã©ã¹ã®ã¹ã¿ã€ã«ãç°¡åã«èŠã€ããããšãã§ããŸãã
äŸ3ïŒãµãŒãããŒãã£è£œã¹ã¿ã€ã«ã®ç®¡ç
ãµãŒãããŒãã£ã®ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã䜿çšããå Žåãã¬ã€ã€ãŒã䜿çšããŠãããã®ã¹ã¿ã€ã«ãç¬èªã®ã¹ã¿ã€ã«ããåé¢ã§ããŸããããã«ãããç«¶åãé²ããå¿ èŠã«å¿ããŠãµãŒãããŒãã£ã®ã¹ã¿ã€ã«ãäžæžããããããªããŸãã
@layer third-party;
@layer custom;
@import url("bootstrap.min.css") layer(third-party);
@layer custom {
/* Bootstrapã®ã¹ã¿ã€ã«ãäžæžãããã«ã¹ã¿ã ã¹ã¿ã€ã« */
.btn-primary {
background-color: #007bff;
}
}
ãã®äŸã§ã¯ãBootstrapã®ã¹ã¿ã€ã«ãthird-party
ã¬ã€ã€ãŒã«ã€ã³ããŒããããŸããæ¬¡ã«ãcustom
ã¬ã€ã€ãŒã«Bootstrapã®ã¹ã¿ã€ã«ãäžæžãããã¹ã¿ã€ã«ãå«ãŸããŸããããã«ãããã«ã¹ã¿ã ã¹ã¿ã€ã«ãBootstrapã®ã¹ã¿ã€ã«ãããåªå
ãããããšãä¿èšŒãããŸãããã«ã¹ã¿ã ã¹ã¿ã€ã«ã«åœ±é¿ãäžããããšãªãBootstrapãç°¡åã«æŽæ°ããããšãã§ããŸãã
CSS @layerã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
以äžã¯ãCSS @layerã䜿çšããéã«å¿ã«çããŠããã¹ããã¹ããã©ã¯ãã£ã¹ã§ãïŒ
- ã¬ã€ã€ãŒæ§é ãèšç»ãã: ã¬ã€ã€ãŒã䜿ãå§ããåã«ãæéããããŠã¬ã€ã€ãŒæ§é ãèšç»ããŠãã ãããã¢ããªã±ãŒã·ã§ã³å ã®ããŸããŸãªçš®é¡ã®ã¹ã¿ã€ã«ãšãããããäºãã«ã©ã®ããã«é¢é£ããŠããããèæ ®ããŸãã説æçã§çè§£ããããã¬ã€ã€ãŒåãéžæããŠãã ããã
- ã¬ã€ã€ãŒãäžè²«ããŠå®çŸ©ãã: ã¹ã¿ã€ã«ã·ãŒãå šäœã§äžè²«ããé åºã§ã¬ã€ã€ãŒãå®çŸ©ããŠãã ãããããã«ãããã«ã¹ã±ãŒãã®é åºãçè§£ãããããªããæå³ããªãã¹ã¿ã€ã«ã®ç«¶åã®ãªã¹ã¯ãæžå°ããŸãã
- ã¬ã€ã€ãŒã®çŠç¹ãçµã: åã¬ã€ã€ãŒã¯ç¹å®ã®çš®é¡ã®ã¹ã¿ã€ã«ã«çŠç¹ãåœãŠãã¹ãã§ããããã«ãããã¹ã¿ã€ã«ã·ãŒããããæŽçãããä¿å®ãããããªããŸãã
- 詳现床ã管çããããã«ã¬ã€ã€ãŒã䜿çšãã: ã¬ã€ã€ãŒã¯è©³çŽ°åºŠãå¶åŸ¡ããããã«äœ¿çšã§ããŸãããæ éã«äœ¿çšããããšãéèŠã§ããé床ã«è€éãªè©³çŽ°åºŠã®éå±€ãäœæããããã«ã¬ã€ã€ãŒã䜿çšããããšã¯é¿ããŠãã ããã
- ã¬ã€ã€ãŒæ§é ãææžåãã: ä»ã®éçºè ãã¹ã¿ã€ã«ã·ãŒãã®æ§æãçè§£ã§ããããã«ãã¬ã€ã€ãŒæ§é ãææžåããŠãã ãããããã¯ãç¹ã«ããŒã ã§äœæ¥ããå Žåã«éèŠã§ãã
ãã©ãŠã¶ã®ãµããŒã
CSS @layerã¯ãChromeãFirefoxãSafariãEdgeãªã©ãçŸä»£ã®ãã©ãŠã¶ã§åªãããµããŒããåããŠããŸããå®å¿ããŠãããžã§ã¯ãã§äœ¿çšã§ããŸãã
çµè«
CSS @layerã¯ãCSSã®ã«ã¹ã±ãŒãã管çããããã®åŒ·åãªããŒã«ã§ããã¬ã€ã€ãŒã䜿çšããããšã§ãã¹ã¿ã€ã«ã·ãŒãã®æ§æãä¿å®æ§ãã¹ã±ãŒã©ããªãã£ãåäžãããããšãã§ããŸããå°èŠæš¡ãªãŠã§ããµã€ãããå€§èŠæš¡ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãŸã§ãCSS @layerã¯ããã¯ãªãŒã³ã§ä¿å®æ§ã®é«ãCSSã³ãŒããæžãã®ã«åœ¹ç«ã¡ãŸãã
CSS @layerãæŽ»çšããŠãCSSã«ã¹ã±ãŒããå¶åŸ¡ããããå ç¢ã§ä¿å®æ§ã®é«ããŠã§ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸãããã