Document: adoptedStyleSheets ããããã£
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2023å¹´3æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
adoptedStyleSheets 㯠Document ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ããããã£ã§ããã®ææ¸ã§ä½¿ç¨ããæ§ç¯ãããã¹ã¿ã¤ã«ã·ã¼ãã®é
åãè¨å®ããããã«ä½¿ç¨ãã¾ãã
ã¡ã¢:
æ§ç¯ãããã¹ã¿ã¤ã«ã·ã¼ãã¨ã¯ãCSSStyleSheet() ã³ã³ã¹ãã©ã¯ã¿ã¼ãç¨ãã¦ããã°ã©ã ã§ä½æãããã¹ã¿ã¤ã«ã·ã¼ãã®ãã¨ã§ãï¼ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ããã¹ã¯ãªããããã¹ã¿ã¤ã«ã·ã¼ããã¤ã³ãã¼ããããã<style> ã @import ã使ç¨ãã¦ã¤ã³ãã¼ããããã<link> ã§ãªã³ã¯ãããããå ´åã«ä½æãããã¹ã¿ã¤ã«ã·ã¼ãã¨ã¯ç°ãªãã¾ãï¼ã
ãã®ã¹ã¿ã¤ã«ã·ã¼ãã¯ãShadowRoot.adoptedStyleSheets ããããã£ã使ç¨ãã¦ã1 ã¤ä»¥ä¸ã® ShadowRoot ã¤ã³ã¹ã¿ã³ã¹ã¨å
±æãããã¨ãã§ãã¾ãã
ãã®ã¹ã¿ã¤ã«ã·ã¼ãã夿´ããã¨ããããæ¡ç¨ãã¦ãããã¹ã¦ã®ãªãã¸ã§ã¯ãã«å½±é¿ãã¾ãã
ããããã£å
ã®ã¹ã¿ã¤ã«ã·ã¼ãã¯ãCSS ã«ã¹ã±ã¼ãã¢ã«ã´ãªãºã ã使ç¨ãã¦ãææ¸ã®ä»ã®ã¹ã¿ã¤ã«ã·ã¼ãã¨å
±ã«è©ä¾¡ããã¾ãã
ã«ã¼ã«ã®è§£æ±ºãã¹ã¿ã¤ã«ã·ã¼ãã®é åºãèæ
®ããå ´åãadoptedStyleSheets 㯠Document.styleSheets å
ã®ã¹ã¿ã¤ã«ã·ã¼ãã®å¾ã«ä¸¦ã¹ãããã¨æ³å®ããã¾ãã
ç¾å¨ã® Document ã®ã³ã³ããã¹ãå
ã§ CSSStyleSheet() ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ãã¦ä½æãããã¹ã¿ã¤ã«ã·ã¼ãã®ã¿ãæ¡ç¨ããã¾ãã
å¤
å¤ã¯ CSSStyleSheet ã¤ã³ã¹ã¿ã³ã¹ã®é
åã§ãããããã¯åã CSSStyleSheet() ã®ã³ã³ããã¹ãå
ã§ Document ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ãã¦ä½æããã¦ããå¿
è¦ãããã¾ãã
é
åã夿´ããå¿
è¦ãããå ´åã¯ãpush() ã®ãããªãã®å ´ã§ã®å¤æ´ãä½¿ç¨ ãã¦ãã ãããã¾ããCSSStyleSheet ã¤ã³ã¹ã¿ã³ã¹èªä½ã夿´ãããã¨ãã§ãããã®å¤æ´ã¯ãã®ã¹ã¿ã¤ã«ã·ã¼ããæ¡ç¨ããã¦ããå ´æã§ããã°ã©ãã§ãé©ç¨ããã¾ãã
以åã®ãã¼ã¸ã§ã³ã®ä»æ§ã§ã¯ãé
åã¯å¤æ´ãããã¨ãã§ããªãã£ããããæ°ããã¹ã¿ã¤ã«ã·ã¼ãã追å ããå¯ä¸ã®æ¹æ³ã¯ adoptedStyleSheets ã«æ°ããé
åãå²ãå½ã¦ããã¨ã§ããã
ä¾å¤
NotAllowedErrorDOMException-
é åå ã®
CSSStyleSheetã¤ã³ã¹ã¿ã³ã¹ã®ãããããCSSStyleSheet()ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ãã¦ä½æããã¦ããªããããã¬ã¼ã å ãªã©ç¾å¨ã®ææ¸ã¨ã¯ç°ãªãææ¸ã§ä½æããã¦ãã¾ãã
ä¾
>ã¹ã¿ã¤ã«ã·ã¼ãã®æ¡ç¨
ä¸è¨ã³ã¼ãã¯ã¹ã¿ã¤ã«ã·ã¼ãã使ãããCSSStyleSheet.replaceSync() ãå¼ã³åºããã¦ã«ã¼ã«ã追å ãããæ§åã示ãã¦ãã¾ãã
ãã®ã¹ã¿ã¤ã«ã·ã¼ãã¯é
åã«è¿½å ãããadoptedStyleSheets ããããã£ã«å²ãå½ã¦ããã¦ãã¾ãã
// 空ã®ãæ§ç¯ããããã¹ã¿ã¤ã«ã·ã¼ãã®ä½æ
const sheet = new CSSStyleSheet();
// ã·ã¼ãã«ã«ã¼ã«ãé©ç¨
sheet.replaceSync("a { color: red; }");
// ææ¸ã¸ã¹ã¿ã¤ã«ã·ã¼ããé©ç¨
document.adoptedStyleSheets = [sheet];
CSSStyleSheet.insertRule() ãç¨ãã¦æ°ããã«ã¼ã«ãã¹ã¿ã¤ã«ã·ã¼ãã«è¿½å ãããã¨ãã§ãã¾ãã
sheet.insertRule("* { background-color: blue; }");
// ææ¸ã¯éãèæ¯ã«ãªãã
æ°ããã¹ã¿ã¤ã«ã·ã¼ãã®è¿½å
adoptedStyleSheets ããããã£ã«å
¨ãæ°ããã¹ã¿ã¤ã«ã·ã¼ãã追å ããã«ã¯ãæ°ããçµåé
åã使ãã¦å²ãå½ã¦ãå¿
è¦ãããã¾ãã
ä¸è¨ã¯ã¹ãã¬ããæ§æã使ç¨ãã¦ãã¾ãã
const extraSheet = new CSSStyleSheet();
extraSheet.replaceSync("p { color: green; }");
// æ¢åã®ã·ã¼ãã¨æ°ããã·ã¼ãã®çµå
document.adoptedStyleSheets = [...document.adoptedStyleSheets, extraSheet];
ã·ã£ã㦠DOM ã¨ã®ã¹ã¿ã¤ã«ã·ã¼ãã®å ±æ
ãã®ã¹ã¿ã¤ã«ã·ã¼ãã¯ãåæ§ã®æ¹æ³ã§ã·ã£ãã¦ã«ã¼ãã¨å ±æãããã¨ãã§ãã¾ãã
// ææ¸å
ã®è¦ç´ ã使ããã·ã£ãã¦ã«ã¼ãã使
const node = document.createElement("div");
const shadow = node.attachShadow({ mode: "open" });
// åãã·ã¼ããã·ã£ã㦠DOM ã«æ¡ç¨
shadow.adoptedStyleSheets = [sheet];
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Object Model (CSSOM) > # dom-documentorshadowroot-adoptedstylesheets > |