@layer
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2022å¹´3æâ©.
@layer 㯠CSS ã®ã¢ããã«ã¼ã«ã§ãã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã宣è¨ããããã«ä½¿ç¨ããã¾ãè¤æ°ã®ã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ãããå ´åã«ãåªå
é ä½ãå®ç¾©ããããã«ã使ç¨ãããã¨ãã§ãã¾ãã
試ãã¦ã¿ã¾ããã
@layer module, state;
@layer state {
.alert {
background-color: brown;
}
p {
border: medium solid limegreen;
}
}
@layer module {
.alert {
border: medium solid violet;
background-color: yellow;
color: white;
}
}
<p class="alert">ã¾ã³ãã«æ³¨æ</p>
æ§æ
/* æã®ã¢ããã«ã¼ã« */
@layer layer-name;
@layer layer-name, layer-name, layer-name;
/* ãããã¯ã®ã¢ããã«ã¼ã« */
@layer {rules}
@layer layer-name {rules}
ããã§æ¬¡ã®ããã«ãªãã¾ãã
- layer-name
-
ã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã®ååã§ãã
- rules
-
ãã®ã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã«å«ã¾ããä¸é£ã® CSS ã«ã¼ã«ã§ãã
解説
ã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼å ã®ã«ã¼ã«ã¯ä¸ç·ã«ã«ã¹ã±ã¼ããããã¦ã§ãéçºè ã¯ã«ã¹ã±ã¼ããããå¶å¾¡ã§ããããã«ãªãã¾ããã¬ã¤ã¤ã¼å ã§å®ç¾©ããã¦ããªãã¹ã¿ã¤ã«ã¯ã常ã«ååä»ãã¾ãã¯ç¡åã®ã¬ã¤ã¤ã¼ã§å®£è¨ãããã¹ã¿ã¤ã«ã䏿¸ããã¾ãã
次ã®å³ã¯ã 1, 2, ..., N ã®é ã«å®£è¨ãããã¬ã¤ã¤ã¼ã®åªå é ä½ã示ãã¦ãã¾ãã
ä¸è¨ã®å³ã«ç¤ºããã¦ããããã«ã !important ãã©ã°ä»ãã®éè¦ãªå®£è¨ã¯ãé常ã®å®£è¨ãã¤ã¾ã !important ãã©ã°ã®ãªãé常ã®å®£è¨ãããåªå
ããã¾ããéè¦ãªã«ã¼ã«éã®åªå
é ä½ã¯ãé常ã®ã«ã¼ã«ã®é åºã¨éã«ãªãã¾ãããã©ã³ã¸ã·ã§ã³ãæãåªå
é ä½ãé«ããªãã¾ããæ¬¡ã«åªå
é ä½ãé«ãã®ã¯ãéè¦ãªã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ã宣è¨ãéè¦ãªã¦ã¼ã¶ã¼å®£è¨ãéè¦ãªä½æè
宣è¨ã®é ã§ããã¦ã¼ã¶ã¼ã¯ããã©ã¦ã¶ã¼ã®ç°å¢è¨å®ããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã®ç°å¢è¨å®ãã¾ãã¯ãã©ã¦ã¶ã¼ã®æ¡å¼µæ©è½ã使ç¨ãã¦ã¹ã¿ã¤ã«ãæå®ãããã¨ãã§ãã¾ãããããã®éè¦ãªå®£è¨ã¯ã使è
ãã¤ã¾ãã¦ã§ãéçºè
ãæ¸ããéè¦ãªå®£è¨ãããåªå
ããã¾ãã
使è
ã¹ã¿ã¤ã«å
ã§ã¯ãCSSã¬ã¤ã¤ã¼å
ã§å®£è¨ããããã¹ã¦ã®éè¦ãªå®£è¨ã¯ãã¬ã¤ã¤ã¼å¤ã§å®£è¨ãããéè¦ãªå®£è¨ãå¼ãç¶ãã¾ãããCSSã¬ã¤ã¤ã¼å
ã§å®£è¨ããããã¹ã¦ã®é常ã®å®£è¨ã¯ãã¬ã¤ã¤ã¼å¤ã§å®£è¨ããã宣è¨ãããåªå
é ä½ãä½ããªãã¾ãã
宣è¨ã®é åºã¯éè¦ã§ããæåã«å®£è¨ãããã¬ã¤ã¤ã¼ã¯æãä½ãåªå
é ä½ã¨ãªããæå¾ã«å®£è¨ãããã¬ã¤ã¤ã¼ã¯æãé«ãé ä½ã¨ãªãã¾ãããã ãã !important ãã©ã°ã使ç¨ãããå ´åã¯åªå
é ä½ãé転ãã¾ãã
@layer ã¢ããã«ã¼ã«ã¯ã 3 ã¤ã®æ¹æ³ã®ããããã§ã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã使ããããã«ä½¿ç¨ãã¾ãã
æåã®æ¹æ³ã¯ã @layer ãããã¯ã¢ããã«ã¼ã«ã使ç¨ãã¦ååä»ãã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã使ãã CSS ã«ã¼ã«ããã®ä¸ã«å
¥ãããã¨ã§ãã
@layer utilities {
.padding-sm {
padding: 0.5rem;
}
.padding-lg {
padding: 0.8rem;
}
}
2 ã¤ç®ã®æ¹æ³ã¯ã @layer æã¢ããã«ã¼ã«ã使ç¨ãã¦ã
ã¹ã¿ã¤ã«ãå²ãå½ã¦ãã«ååä»ãã®ã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã使ããæ¹æ³ã§ããããã¯ä¸è¨ã®ããã«åä¸ã®ã¬ã¤ã¤ã¼ã¨ãããã¨ãã§ãã¾ãã
@layer utilities;
次ã®ããã«ãã¦è¤æ°ã®ã¬ã¤ã¤ã¼ãä¸åº¦ã«å®ç¾©ãããã¨ãã§ãã¾ãã
@layer theme, layout, utilities;
ããã¯ãã¬ã¤ã¤ã¼ã宣è¨ããæåã®é åºããã©ã®ã¬ã¤ã¤ã¼ãåªå
ããããã示ãã®ã§ä¾¿å©ã§ãã宣è¨ã®å ´åã¨åæ§ã«ãè¤æ°ã®ã¬ã¤ã¤ã¼ã§å®£è¨ãè¦ã¤ãã£ãå ´åã¯ãæå¾ã«ãªã¹ãã¢ãããããã¬ã¤ã¤ã¼ãåªå
ããã¾ãããããã£ã¦ãå
ã»ã©ã®ä¾ã§ã¯ãtheme 㨠utilities ã§ç«¶åããã«ã¼ã«ããã£ãå ´åã utilities ã«ããã«ã¼ã«ãåªå
çã«é©ç¨ãããã§ãããã
utilities ã®ã«ã¼ã«ã®æ¹ã theme ã«ã¼ã«ããã詳細度ãä½ãã¦ãé©ç¨ããã¾ããããã¯ãã¬ã¤ã¤ã¼ã®é åºã決ã¾ãã°ã詳細度ãè¦ãç®ã®é åºã¯ç¡è¦ãããããã§ããããã¯ãã»ã¬ã¯ã¿ã¼ãç«¶åããã«ã¼ã«ã䏿¸ãããã®ã«ååãªé«ã詳細度ãæã¤ãã¨ãä¿è¨¼ããå¿
è¦ããªããå¾ã®ã¬ã¤ã¤ã¼ã«è¡¨ç¤ºããããã¨ã ããä¿è¨¼ããã°ãããããããã·ã³ãã«ãª CSS ã»ã¬ã¯ã¿ã¼ã使ãããã¨ãå¯è½ã«ãªãã®ã§ãã
ã¡ã¢: ã¬ã¤ã¤ã¼åã宣è¨ãã¦é çªã決ããããååã宣è¨ãç´ãã¦ã¬ã¤ã¤ã¼ã« CSS ã«ã¼ã«ã追å ãã¦ãã ãããããã¨ãã¹ã¿ã¤ã«ãã¬ã¤ã¤ã¼ã«è¿½å ãããã¬ã¤ã¤ã¼ã®é åºã¯å¤æ´ããã¾ããã
3 ã¤ç®ã®æ¹æ³ã¯ã @layer ãããã¯ã¢ããã«ã¼ã«ã使ç¨ãã¦ååã®ãªãã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã使ããæ¹æ³ã§ãã
@layer {
p {
margin-block: 1rem;
}
}
ããã¯ç¡åã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã使ãã¾ãããã®ã¬ã¤ã¤ã¼ã¯ååä»ãã¬ã¤ã¤ã¼ã¨åãããã«æ©è½ãã¾ãããå¾ã§ã«ã¼ã«ãå²ãå½ã¦ããã¨ã¯ã§ãã¾ãããç¡åã¬ã¤ã¤ã¼ã®åªå é ä½ã¯ãååä»ãã¾ãã¯ç¡åã®ã¬ã¤ã¤ã¼ã宣è¨ãããé çªã§ãããã¬ã¤ã¤ã¼ã®å¤å´ã§å®£è¨ãããã¹ã¿ã¤ã«è¨å®ãããä¸ã«ãªãã¾ãã
ã«ã¹ã±ã¼ãã¬ã¤ã¤ã¼ã使ããããä¸ã¤ã®æ¹æ³ã¯ã @import ã使ç¨ãããã¨ã§ãããã®å ´åãã«ã¼ã«ã¯ã¤ã³ãã¼ããããã¹ã¿ã¤ã«ã·ã¼ãã®ä¸ã«ãããã¨ã«ãªãã¾ãã @import ã¢ããã«ã¼ã«ã¯ã @charset ã«ã¼ã«ã¨ @layer ã«ã¼ã«ãé¤ããä»ã®ãã¹ã¦ã®ç¨®é¡ã®ã«ã¼ã«ã«å
ç«ã£ã¦å
¥åããªããã°ãªããªããã¨ãè¦ãã¦ããã¦ãã ããã
@import "theme.css" layer(utilities);
ã¬ã¤ã¤ã¼ã®å ¥ãå
次ã®ããã«ãã¬ã¤ã¤ã¼ã¯å ¥ãåã«ãããã¨ãã§ãã¾ãã
@layer framework {
@layer layout {
}
}
framework ã®ä¸ã«ãã layout ã¬ã¤ã¤ã¼ã«ã«ã¼ã«ã追å ããã«ã¯ã 2 ã¤ã®ååã . ã§ã¤ãªãã§ãã ããã
@layer framework.layout {
p {
margin-block: 1rem;
}
}
形弿æ³
@layer =
@layer <layer-name>? { <rule-list> } |
@layer <layer-name># ;
<layer-name> =
<ident> [ '.' <ident> ]*
ä¾
>åºæ¬çãªä¾
次ã®ä¾ã§ã¯ã 2 ã¤ã® CSS ã«ã¼ã«ã使ããã¦ãã¾ãã 1 ã¤ã¯ã¬ã¤ã¤ã¼ã®å¤ã«ãã <p> è¦ç´ ã«å¯¾ãã¦ãããä¸ã¤ã¯ .box p ã«å¯¾ã㦠type ã¨ããã¬ã¤ã¤ã¼ã®å
å´ã«ããã¾ãã
ã¬ã¤ã¤ã¼ããªããã°ãã»ã¬ã¯ã¿ã¼ .box p ãæãé«ã詳細度ãæã¤ã®ã§ãããã¹ã Hello, world! ã¯ç·è²ã§è¡¨ç¤ºããã¾ãã type ã¬ã¤ã¤ã¼ã¯ã¬ã¤ã¤ã¼ä»¥å¤ã®ã³ã³ãã³ããä¿æããããã«ä½æãããç¡åã¬ã¤ã¤ã¼ã®åã«ãããããããã¹ãã¯ç´«è²ã§è¡¨ç¤ºããã¾ãã
ã¾ããé åºã«ã注æãã¦ãã ãããã¬ã¤ã¤ã¼ä»¥å¤ã®ã¹ã¿ã¤ã«ãæåã«å®£è¨ãã¦ããããã¯ã¬ã¤ã¤ã¼ã®ã¹ã¿ã¤ã«ã®å¾ã«é©ç¨ããã¾ãã
HTML
<div class="box">
<p>Hello, world!</p>
</div>
CSS
p {
color: rebeccapurple;
}
@layer type {
.box p {
font-weight: bold;
font-size: 1.3em;
color: green;
}
}
çµæ
æ¢åã®ã¬ã¤ã¤ã¼ã«ã«ã¼ã«ãå²ãå½ã¦ã
次ã®ä¾ã§ã¯ãã«ã¼ã«ãé©ç¨ããã¦ããªã 2 ã¤ã®ã¬ã¤ã¤ã¼ã使ãããã® 2 ã¤ã®ã¬ã¤ã¤ã¼ã« CSS ã«ã¼ã«ãé©ç¨ãã¦ãã¾ãããã¼ã¹ã¨ãªãã¬ã¤ã¤ã¼ã¯ãè²ããã¼ãã¼ããã©ã³ããµã¤ãºãããã£ã³ã°ãå®ç¾©ãã¦ãã¾ãã special ã¬ã¤ã¤ã¼ã§ã¯ãå¥ã®è²ãå®ç¾©ãã¦ãã¾ãã special ã¯ã¬ã¤ã¤ã¼ãå®ç¾©ããéã«æå¾ã«æ¥ãã®ã§ããããæä¾ããè²ã使ç¨ãããããã¹ã㯠rebeccapurple ã使ç¨ãã¦è¡¨ç¤ºããã¾ãããã®ä»ã®ã«ã¼ã«ã¯ base ã®ãã®ããã®ã¾ã¾é©ç¨ããã¾ãã
HTML
<div class="item">
ããã¯ã <code>base</code> ã¬ã¤ã¤ã¼ã®å¾ã« <code>special</code> ã¬ã¤ã¤ã¼ãæ¥ãããã <code>color: rebeccapurple</code> ã§è¡¨ç¤ºããã¾ããç·è²ã®å¢çç·ããã©ã³ããµã¤ãºãããã£ã³ã°ã¯ã <code>base</code> ã¬ã¤ã¤ã¼ã§æ±ºã¾ãã¾ãã
</div>
CSS
@layer base, special;
@layer special {
.item {
color: rebeccapurple;
}
}
@layer base {
.item {
color: green;
border: 5px solid green;
font-size: 1.3em;
padding: 0.5em;
}
}
çµæ
仿§æ¸
| Specification |
|---|
| CSS Cascading and Inheritance Level 5 > # layering > |