@scope
Baseline
2025
æè¿å©ç¨å¯è½
December 2025以éããã®æ©è½ã¯ææ°ã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã³ãã©ã¦ã¶ã¼ã§åä½ãã¾ããå¤ã端æ«ããã©ã¦ã¶ã¼ã§ã¯åä½ããªããã¨ãããã¾ãã
@scope 㯠CSS ã®ã¢ããã«ã¼ã«ã使ç¨ããã¨ãç¹å®ã® DOM ãµãããªã¼å
ã®è¦ç´ ã鏿ã§ããããã«ãªããã»ã¬ã¯ã¿ã¼ã DOM æ§é ã«å¯æ¥ã«çµåããããã¨ãªããã¾ã䏿¸ããã«ããç¹å®ã®ã»ã¬ã¯ã¿ã¼ãæ¸ããã¨ãªããè¦ç´ ãæ£ç¢ºã«å¯¾è±¡ã¨ãããã¨ãã§ãã¾ãã
JavaScript ã§ @scope 㯠CSS ãªãã¸ã§ã¯ãã¢ãã«ã¤ã³ã¿ã¼ãã§ã¤ã¹ã® CSSScopeRule ããã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
æ§æ
@scope ã¢ããã«ã¼ã«ã¯ã 1 ã¤ä»¥ä¸ã®ã«ã¼ã«ã»ããï¼ã¹ã³ã¼ãä»ãã¹ã¿ã¤ã«ã«ã¼ã«ã¨å¼ã°ãã¾ãï¼ãåãã鏿ããè¦ç´ ã«é©ç¨ããã¹ã³ã¼ããå®ç¾©ãã¾ãã @scope 㯠2 ã¤ã®æ¹æ³ã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
-
CSS ã®ä¸ã«ãããç¬ç«ãããããã¯ã¨ãã¦ããã®å ´åãã¹ã³ã¼ãã«ã¼ãã¨ãªãã·ã§ã³ã®ã¹ã³ã¼ããªãããã»ã¬ã¯ã¿ã¼ãå«ãåç½®é¨ãè¨è¿°ãã¾ãããããã¯ã¹ã³ã¼ãã®ä¸éã¨ä¸éãå®ç¾©ãã¾ãã
css@scope (ã¹ã³ã¼ãã«ã¼ã) to (ã¹ã³ã¼ããªããã) { /* ⦠*/ } -
HTML ã§
<style>è¦ç´ ã®ä¸ã«è¨è¼ããã¤ã³ã©ã¤ã³ã¹ã¿ã¤ã«ã¨ãã¦ããã®å ´åãåç½®ãé¨ã¯é¤å¤ãããå²ã¾ããã«ã¼ã«ã»ããã¯èªåçã«<style>è¦ç´ ã®è¦ªè¦ç´ ã®ã¹ã³ã¼ãã«ãªãã¾ããhtml<parent-element> <style> @scope { /* ã«ã¼ã«ã»ãã */ } </style> </parent-element>ã¾ããã¤ã³ã©ã¤ã³ã®
@scopeãã¹ã³ã¼ãå¶éã»ã¬ã¯ã¿ã¼ã¨çµã¿åããããã¨ãå¯è½ã§ããä¾ãã°ã@scope to (ã¹ã³ã¼ããªããã) { ... }ã®ããã«ãã¾ãã
解説
è¤éãªã¦ã§ãææ¸ã«ã¯ããããã¼ãããã¿ã¼ããã¥ã¼ã¹è¨äºãå°å³ãã¡ãã£ã¢ãã¬ã¼ã¤ã¼ãåºåãªã©ã®é¨åãå«ã¾ãããã¨ãããã¾ããè¤éããå¢ãã«ã¤ãã¦ããããã®é¨åã®ã¹ã¿ã¤ã«è¨å®ã广çã«ç®¡çãããã¨ãéè¦ã«ãªããã¹ã¿ã¤ã«ã广çã«ã¹ã³ã¼ãåãããã¨ã§ããã®è¤éãã管çãããã¨ãã§ãã¾ãã以ä¸ã® DOM ããªã¼ãèãã¦ã¿ã¾ãããã
body
ââ article.feature
ââ section.article-hero
â ââ h2
â ââ img
â
ââ section.article-body
â ââ h3
â ââ p
â ââ img
â ââ p
â ââ figure
â ââ img
â ââ figcaption
â
ââ footer
ââ p
ââ img
ã¯ã©ã¹ã article-body ã§ãã <section> å
ã® <img> è¦ç´ ã鏿ãããå ´åã¯ã以ä¸ã®ããã«ãã¾ãã
.feature > .article-body > imgã®ãããªã»ã¬ã¯ã¿ã¼ãæ¸ãæ¹æ³ãããããããã¯é«ã詳細度ãæã¤ãã䏿¸ããã«ãããã¾ã DOM æ§é ã¨ç·å¯ã«çµåãã¦ãã¾ããå°æ¥ããã¼ã¯ã¢ããã®æ§é ãå¤ãã£ãããCSS ãæ¸ãç´ãå¿ è¦ãããããããã¾ããã.article-body imgã®ããã«ã詳細度ãä¸ãã¦æ¸ãæ¹æ³ãããããããã§ã¯sectionå ã®ç»åããã¹ã¦é¸æãã¦ãã¾ãã¾ãã
ããã§æçãªã®ã @scope ã§ããããã使ããã¨ã§ãã»ã¬ã¯ã¿ã¼ã対象ã¨ããè¦ç´ ãæ£ç¢ºã«å®ç¾©ãããã¨ãã§ãã¾ããä¾ãã°ã次ã®ä¾ã®ããã«åç¬ã® @scope ãããã¯ã使ç¨ãã¦ä¸è¨ã®åé¡ã解決ãããã¨ãã§ãã¾ãã
@scope (.article-body) to (figure) {
img {
border: 5px solid black;
background-color: goldenrod;
}
}
ã¹ã³ã¼ãã«ã¼ãã»ã¬ã¯ã¿ã¼ã§ãã .article-body ã¯ãã«ã¼ã«ã»ãããé©ç¨ããã DOM ããªã¼ã®ã¹ã³ã¼ãã®ä¸éãå®ç¾©ããã¹ã³ã¼ããªãããã»ã¬ã¯ã¿ã¼ã§ãã figure ã¯ä¸éãå®ç¾©ãã¾ãããã®çµæãã¯ã©ã¹ã article-body ã§ãã <section> ã®ä¸ã«ãã <img> è¦ç´ ã®ã¿ã鏿ããã<figure> è¦ç´ ã®ä¸ã¯é¸æããã¾ããã
ã¡ã¢: ãã®ãããªä¸éã¨ä¸éã®ããã¹ã³ã¼ãã¯ãä¸è¬ã«ãã¼ããã¹ã³ã¼ãã¨å¼ã°ãã¦ãã¾ãã
ã¹ã³ã¼ãã®ä¸éã¯å
å«ãããä¸éã¯é¤å¤ããã¾ãããã®åä½ã夿´ããã«ã¯ãããããã®ã»ã¬ã¯ã¿ã¼ãå
¨ç§°åã»ã¬ã¯ã¿ã¼ã¨çµã¿åããããã¨ãã§ãã¾ããä¾ãã°ã@scope (ã¹ã³ã¼ãã«ã¼ã) to (ã¹ã³ã¼ããªããã > *) ã¨ããã¨ä¸¡æ¹ã®å¢çãå
å«åã«ãªãã@scope (ã¹ã³ã¼ãã«ã¼ã > *) to (ã¹ã³ã¼ããªããã) ã¨ããã¨ä¸¡æ¹ã®å¢çãé¤å¤åã«ãªãã¾ãã䏿¹ã@scope (ã¹ã³ã¼ãã«ã¼ã > *) to (ã¹ã³ã¼ããªããã > *) ã¨ããã¨ãä¸éã¯é¤å¤åãä¸éã¯å
å«åã«ãªãã¾ãã
article-body ã¯ã©ã¹ãæã¤ <section> å
ã®ç»åããã¹ã¦é¸æãããå ´åã¯ãã¹ã³ã¼ããªãããã»ã¬ã¯ã¿ã¼ãçç¥ã§ãã¾ãã
@scope (.article-body) {
img {
border: 5px solid black;
background-color: goldenrod;
}
}
ãããã¯ã @scope ãããã¯ã article-body ã¯ã©ã¹ã®ä»ãã <section> ã®ä¸ãã¤ã³ã©ã¤ã³ã® <style> è¦ç´ ã®ä¸ã«è¨è¼ããããã¨ãã§ãã¾ãã
<section class="article-body">
<style>
@scope {
img {
border: 5px solid black;
background-color: goldenrod;
}
}
</style>
<!-- ... -->
</section>
ã¡ã¢:
éè¦ãªãã¨ã¯ã @scope ã¯ã»ã¬ã¯ã¿ã¼ã®ã¢ããªã±ã¼ã·ã§ã³ãåºæã® DOM ãµãããªã¼ã«åé¢ãããã¨ã¯ã§ãã¾ãããé©ç¨ãããã¹ã¿ã¤ã«ããµãããªã¼å
ã«å®å
¨ã«åé¢ãããã¨ã¯ã§ããªãã¨ãããã¨ã§ããï¼ä¾ãã° color ã font-family ã®ããã«ï¼åããç¶æ¿ãããããããã£ã¯ãè¨å®ããã¹ã³ã¼ãã®ãè¶
ãã¦ç¶æ¿ããã¾ãã
@scope ãããã¯å
ã® :scope æ¬ä¼¼ã¯ã©ã¹
@scope ãããã¯å
ã§ã¯ã:scope æ¬ä¼¼ã¯ã©ã¹ã使ç¨ãããã¨ã§ã次ã®ããã«ã¹ã³ã¼ãã®ã«ã¼ãè¦ç´ ã«ã¹ã¿ã¤ã«ãç´æ¥é©ç¨ãããã¨ãã§ãã¾ãã
@scope (.feature) {
:scope {
background: rebeccapurple;
color: antiquewhite;
font-family: sans-serif;
}
}
@scope ãããã¯å
ã® :scope ã«ã¤ãã¦ã¯ããã¤ãã®æ³¨æäºé
ãããã¾ãã
-
:scopeã¯ã¯ã©ã¹ã¬ãã«ã®è©³ç´°åº¦ã追å ãã¾ãï¼è©³ãã㯠@scope ã®è©³ç´°åº¦ãåç §ãã¦ãã ããï¼ã -
ã¹ã³ã¼ããªãããã¯
:scopeã使ç¨ãã¦ãã¹ã³ã¼ããªãããã¨ã«ã¼ãã¨ã®éã®åºæã®é¢ä¿è¦ä»¶ãæå®ãããã¨ãã§ãã¾ããä¾ãã°ã以ä¸ã®ããã«ãã¾ããcss/* :scope ã®ç´æ¥ã®åã§ããå ´åã«ã®ã¿ãã¹ã³ã¼ããªãããã«ãªãã¾ãã */ @scope (.article-body) to (:scope > figure) { /* ⦠*/ } -
ã¹ã³ã¼ããªãããã¯
:scopeã使ç¨ãã¦ã¹ã³ã¼ãã«ã¼ãå¤ã®è¦ç´ ãåç §ãããã¨ãã§ãã¾ããä¾ãã°ã次ã®ããã«ãã¾ããcss/* figure 㯠:scope ã .feature ã®ä¸ã«ããå ´åã«éããªãããã¨ãªã */ @scope (.article-body) to (.feature :scope figure) { /* ⦠*/ } -
ã¹ã³ã¼ãä»ãã¹ã¿ã¤ã«ã«ã¼ã«ã¯ãµãããªã¼ãé¤å¤ã§ãã¾ããã
:scope + pã®ãããªé¸æã¯ãµãããªã¼ã®å¤ã«ãªãã®ã§ç¡å¹ã§ãã -
ã¹ã³ã¼ãã®ã«ã¼ãã¨ãªãããã¯ã»ã¬ã¯ã¿ã¼ãªã¹ãã¨ãã¦å®ç¾©ãããã¨ãå¯è½ã§ããã®å ´åã¯è¤æ°ã®ã¹ã³ã¼ããå®ç¾©ããã¾ããæ¬¡ã®ä¾ã§ã¯ãã¯ã©ã¹ã
article-heroã¾ãã¯article-bodyã§ãã<section>å ã®<img>ã«ã¯ã¹ã¿ã¤ã«è¨å®ãé©ç¨ããã¾ããã<figure>ã®ä¸ã«å«ã¾ãã¦ãããã®ã«ã¯é©ç¨ããã¾ãããcss@scope (.article-hero, .article-body) to (figure) { img { border: 5px solid black; background-color: goldenrod; } }
@scope ã®è©³ç´°åº¦
@scope ã«ã¼ã«å
ã§ã¯ãåç´ã»ã¬ã¯ã¿ã¼ã¨ & å
¥ãåã»ã¬ã¯ã¿ã¼ã®ä¸¡æ¹ããã»ã¬ã¯ã¿ã¼ã®å
é ã« :where(:scope) ãä»å ããããã®ããã«åä½ãã¾ãã
:where() ãæã¤è©³ç´°åº¦ã¯ã¼ãã§ãããããåç´ã»ã¬ã¯ã¿ã¼ã & ã«éã¿ã¯è¿½å ããã¾ããã詳細度ã®éã¿ã¯ãã»ã¬ã¯ã¿ã¼ã®æ®ãã®é¨åã«ãã£ã¦æ±ºå®ããã¾ãã
ä¾ãã°ã& img ã»ã¬ã¯ã¿ã¼ã®è©³ç´°åº¦ã¯ã:where(:scope) img (0-0-1) ã®è©³ç´°åº¦ã¨åçã§ãã
è¦å:
@scope ãããã¯å
ã® & ã®æ±ãã¯ããã©ã¦ã¶ã¼ã¨ã³ã¸ã³ããªãªã¼ã¹ãã¼ã¸ã§ã³ã«ãã£ã¦ç°ãªãã¾ãã
詳ããã¯ãã©ã¦ã¶ã¼ã®äºææ§ã確èªãã¦ãã ããã
以ä¸ã®ã³ã¼ããããã¯ã«ãã 2 ã¤ã®å ´åã«ããã¦ã詳細度㯠img ã®ã¿ããæ±ºã¾ãã¾ãã
@scope (.article-body) {
/* img ã¯æå¾
éãã 0-0-1 ã®è©³ç´°åº¦ã«ãªã */
img {
/* ⦠*/
}
/* & img ã 0-0-1 ã®è©³ç´°åº¦ã«ãªã */
& img {
/* ⦠*/
}
}
䏿¹ã§ã:scope ãæç¤ºçã«ä½¿ç¨ããã¨ãã¹ã³ã¼ãã®ã«ã¼ãã鏿ãããã¯ã©ã¹ã¬ãã«ã®è©³ç´°åº¦ (0-1-0) ã追å ããã¾ããããã¯ã:scope ãæ¬ä¼¼ã¯ã©ã¹ã§ããããã§ãã
以ä¸ã®ã³ã¼ããããã¯ã§ã¯ã:scope img ã®è©³ç´°åº¦ã¯ 0-1-1 ã¨ãªãã¾ãã
@scope (.article-body) {
/* :scope img 㯠0-1-0 + 0-0-1 = 0-1-1 ã®è©³ç´°åº¦ã«ãªãã¾ãã */
:scope img {
/* ⦠*/
}
}
@scope ã®ç«¶åã®è§£æ±ºæ¹æ³
@scope 㯠CSS ã«ã¹ã±ã¼ãã«æ°ããåºæºãã¹ã³ã¼ãã®è¿æ¥æ§ã追å ãã¾ããããã¯ã 2 ã¤ã®ã¹ã³ã¼ãã«ç«¶åããã¹ã¿ã¤ã«è¨å®ãããå ´åãã¹ã³ã¼ãã«ã¼ãã¾ã§ã® DOM ããªã¼é層ã®ãããæ°ãæãå°ãªãã¹ã¿ã¤ã«ãé©ç¨ããã¨ããç¶æ
ã§ãããã®æå³ãä¾ã§è¦ã¦ããã¾ãããã
次㮠HTML ã¹ãããããè¦ã¦ã¿ã¾ããããç°ãªããã¼ãã®ã«ã¼ããäºãã«å ¥ãåã«ãªã£ã¦ãã¾ãã
<div class="light-theme">
<p>æãããã¼ãã®ããã¹ã</p>
<div class="dark-theme">
<p>æããã¼ãã®ããã¹ã</p>
<div class="light-theme">
<p>æãããã¼ãã®ããã¹ã</p>
</div>
</div>
</div>
ãã¼ãã® CSS ããã®ããã«æ¸ãã¨ãåé¡ãçºçãã¾ãã
.light-theme {
background: #cccccc;
}
.dark-theme {
background: #333333;
}
.light-theme p {
color: black;
}
.dark-theme p {
color: white;
}
ä¸çªå
å´ã®æ®µè½ã¯æãããã¼ãã®ã«ã¼ãã®ä¸ãªã®ã§ãé»ãè²ã¥ããããã¯ãã§ãããããã .light-theme p 㨠.dark-theme p ã®ä¸¡æ¹ã対象ã«ãã¦ãã¾ãã .dark-theme p ã®ã«ã¼ã«ã®æ¹ãã½ã¼ã¹ã®é çªã§å¾ã«ç¾ããããããã¡ããé©ç¨ãããæ®µè½ã¯èª¤ã£ã¦ç½ã«çè²ããã¦ãã¾ãã¾ãã
次ã®ããã« @scope ã使ç¨ãããã¨ã§ããããä¿®æ£ãããã¨ãã§ãã¾ãã
@scope (.light-theme) {
:scope {
background: #cccccc;
}
p {
color: black;
}
}
@scope (.dark-theme) {
:scope {
background: #333333;
}
p {
color: white;
}
}
ããã§ä¸çªå
å´ã®æ®µè½ã¯æ£ããé»ãè²ã¥ãããã¾ãããããã¯ã .light-theme ã®ã¹ã³ã¼ãã«ã¼ããã㯠DOM ããªã¼ã®é層ã1é層ããé¢ãã¦ãããã .dark-theme ã®ã¹ã³ã¼ãã«ã¼ããã㯠2 é層ããé¢ãã¦ããªãããã§ãããããã£ã¦ã light ã¹ã¿ã¤ã«ãåã¡ã¾ãã
ã¡ã¢: ã¹ã³ã¼ãã®è¿æ¥æ§ã¯ã½ã¼ã¹ã®é åºã䏿¸ããã¾ãããéè¦åº¦ãã¬ã¤ã¤ã¼ã詳細度ã®ãããªä»ã«ãåªå 度ã®é«ã仿§ã«ãã£ã¦ä¸æ¸ãããã¾ãã
形弿æ³
@scope =
@scope <scope-boundaries>? { <block-contents> }
<scope-boundaries> =
[ [ ( <scope-start> ) ]? [ to ( <scope-end> ) ]? ]!
<scope-start> =
<selector-list>
<scope-end> =
<selector-list>
<selector-list> =
<complex-selector-list>
<complex-selector-list> =
<complex-selector>#
<complex-selector> =
<complex-selector-unit> [ <combinator>? <complex-selector-unit> ]*
<complex-selector-unit> =
[ <compound-selector>? <pseudo-compound-selector>* ]!
<combinator> =
'>' |
'+' |
'~' |
[ '|' '|' ] |
[ / <wq-name> / ]
<compound-selector> =
[ <type-selector>? <subclass-selector>* ]!
<pseudo-compound-selector> =
<pseudo-element-selector> <pseudo-class-selector>*
<wq-name> =
<ns-prefix>? <ident-token>
<type-selector> =
<wq-name> |
<ns-prefix>? '*'
<subclass-selector> =
<id-selector> |
<class-selector> |
<attribute-selector> |
<pseudo-class-selector>
<pseudo-element-selector> =
: <pseudo-class-selector> |
<legacy-pseudo-element-selector>
<pseudo-class-selector> =
: <ident-token> |
: <function-token> <any-value> )
<ns-prefix> =
[ <ident-token> | '*' ]? '|'
<id-selector> =
<hash-token>
<class-selector> =
'.' <ident-token>
<attribute-selector> =
'[' <wq-name> ']' |
'[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'
<legacy-pseudo-element-selector> =
: [ before | after | first-line | first-letter ]
<attr-matcher> =
[ '~' | '|' | '^' | '$' | '*' ]? '='
<attr-modifier> =
i |
s
ä¾
>ã¹ã³ã¼ãã«ã¼ãå ã®åºæ¬çãªã¹ã¿ã¤ã«è¨å®
ãã®ä¾ã§ã¯ã 2 ã¤ã®å¥åã® @scope ãããã¯ã使ç¨ãã¦ããããã .light-scheme 㨠.dark-scheme ã¯ã©ã¹ãæã¤è¦ç´ å
ã®ãªã³ã¯ã¨ç
§åãã¦ãã¾ããã¹ã³ã¼ãã«ã¼ãèªä½ã鏿ããã¹ã¿ã¤ã«è¨å®ãæä¾ããããã« :scope ã使ç¨ãã¦ãããã¨ã«æ³¨æãã¦ãã ããããã®ä¾ã§ã¯ãã¹ã³ã¼ãã«ã¼ã㯠<div> è¦ç´ ã§ããããããã«ã¯ã©ã¹ãé©ç¨ããã¦ãã¾ãã
HTML
<div class="light-scheme">
<p>
MDN ã«ã¯ã<a href="/ja/docs/Web/HTML">HTML</a>ã
<a href="/ja/docs/Web/CSS">CSS</a>ã
<a href="/ja/docs/Web/JavaScript">JavaScript</a>
ã«é¢ããããããã®æ
å ±ãããã¾ãã
</p>
</div>
<div class="dark-scheme">
<p>
MDN ã«ã¯ã<a href="/ja/docs/Web/HTML">HTML</a>ã
<a href="/ja/docs/Web/CSS">CSS</a>ã
<a href="/ja/docs/Web/JavaScript">JavaScript</a>
ã«é¢ããããããã®æ
å ±ãããã¾ãã
</p>
</div>
CSS
@scope (.light-scheme) {
:scope {
background-color: plum;
}
a {
color: darkmagenta;
}
}
@scope (.dark-scheme) {
:scope {
background-color: darkmagenta;
color: antiquewhite;
}
a {
color: plum;
}
}
çµæ
ä¸è¨ã®ã³ã¼ãã§ã¯ããã®ããã«æç»ããã¾ãã
ã¹ã³ã¼ãã«ã¼ãã¨ã¹ã³ã¼ããªããã
ãã®ä¾ã§ã¯ãå
ã»ã©è§£èª¬ã®ç¯ã§èª¬æãã DOM æ§é ã«ä¸è´ãã HTML ã¹ãããããæå®ããã¦ãã¾ãããã®æ§é ã¯å
¸åçãªè¨äºã®æ¦è¦ã表ãã¾ããæ³¨ç®ãã¹ãä¸»ãªæ©è½ã¯ã <img> è¦ç´ ã§ãæ§é å
ã®æ§ã
ãªã¬ãã«ã§å
¥ãåã«ãªã£ã¦ãã¾ãã
ãã®ä¾ã®ç®çã¯ã <img> è¦ç´ ã®ã¹ã¿ã¤ã«è¨å®ã«ã¹ã³ã¼ãã«ã¼ãã¨ãªãããã使ç¨ããéå±¤ã®æä¸ä½ããéå§ãã <figure> è¦ç´ å
ã® <img> ã¾ã§ããï¼ãã㦠<img> ã¯å«ã¾ããªãï¼è¡¨ç¤ºãããªãæ¹æ³ã示ããã¨ã§ããã¤ã¾ãããã¼ãããã¹ã³ã¼ãã使ãã广ãããã¾ãã
HTML
<article class="feature">
<section class="article-hero">
<h2>è¨äºã®è¦åºã</h2>
<img alt="image" src="" />
</section>
<section class="article-body">
<h3>è¨äºã®å¯è¦åºã</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam euismod
consectetur leo, nec eleifend quam volutpat vitae. Duis quis felis at
augue imperdiet aliquam. Morbi at felis et massa mattis lacinia. Cras
pharetra velit nisi, ac efficitur magna luctus nec.
</p>
<img alt="image" src="" />
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<figure>
<img alt="image" src="" />
<figcaption>ã¤ã³ãã©ã°ã©ãã£ãã¯</figcaption>
</figure>
</section>
<footer>
<p>Written by Chris Mills.</p>
<img alt="image" src="" />
</footer>
</article>
CSS
ãã® CSS ã«ã¯ã 2 ã¤ã® @scope ãããã¯ãããã¾ãã
- æåã®
@scopeãããã¯ã¯ã.featureã®ã¯ã©ã¹ãæã¤è¦ç´ ï¼ãã®å ´åã¯å¤å´ã®<article>ã®ã¿ï¼ãã¹ã³ã¼ãã«ã¼ãã¨ãã¦å®ç¾©ãã¦ããã@scopeã使ç¨ãã¦åºæã® HTML ãµãã»ããããã¼ãã«ã§ãããã¨ã示ãã¦ãã¾ãã - 2 ã¤ç®ã®
@scopeãããã¯ãã¹ã³ã¼ãã«ã¼ãã.featureã¯ã©ã¹ã®è¦ç´ ã¨å®ç¾©ãã¦ãã¾ãããããã«ã¹ã³ã¼ããªãããã¯figureã¨å®ç¾©ãã¦ãã¾ããããã«ãããæ ¼ç´ãããã«ã¼ã«ã»ããã¯ã¹ã³ã¼ãã«ã¼ãï¼ãã®å ´åã¯<article class="feature"> ... </article>ï¼å ã®ä¸è´ããè¦ç´ ã«ã®ã¿é©ç¨ãããåå«ã®<figure>è¦ç´ ã®ä¸ã«å ¥ãåã«ãªã£ã¦ãããã®ã¯é©ç¨ããã¾ããããã®@scopeãããã¯ã«ã¯ã<img>è¦ç´ ã太ã黿 ã¨éè²ã®èæ¯è²ã§ã¹ã¿ã¤ã«è¨å®ããåä¸ã®ã«ã¼ã«ã»ãããæ ¼ç´ããã¦ãã¾ãã
/* ã¹ã³ã¼ãåãã CSS */
@scope (.feature) {
:scope {
background: rebeccapurple;
color: antiquewhite;
font-family: sans-serif;
}
figure {
background-color: white;
border: 2px solid black;
color: black;
padding: 10px;
}
}
/* ãã¼ãããã¹ã³ã¼ã */
@scope (.feature) to (figure) {
img {
border: 5px solid black;
background-color: goldenrod;
}
}
çµæ
ã¬ã³ããªã³ã°ãããã³ã¼ãã§ã¯ã <figure> è¦ç´ ï¼ã©ãã«ä»ã㯠"My infographic"ï¼å
ã®ãã®ãé¤ãã¦ããã¹ã¦ã® <img> è¦ç´ ã太ãå¢çç·ã¨éè²ã®èæ¯ã§ã¹ã¿ã¤ã«è¨å®ããã¦ãããã¨ã«æ³¨ç®ãã¦ãã ããã
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Cascading and Inheritance Level 6 > # scoped-styles > |
| CSS Nesting Module Level 1 > # nesting-at-scope > |
ãã©ã¦ã¶ã¼ã®äºææ§
>css.at-rules.scope
css.selectors.nesting.at-scope
é¢é£æ å ±
:scopeCSSScopeRule- 詳細度
- Defining the
&selector in a@scoperule - css.oddbird.net (2025) - Limit the reach of your selectors with the CSS
@scopeat-rule - developer.chrome.com (2023)