Shadow Dom

½¦µµ¿ì µ¼À» »ç¿ëÇϸé ĸ½¶È­¸¦ ÇÒ¼ö ÀÖ´Ù.
½¦µµ¿ì µ¼À» »ç¿ëÇÏ¸é º°µµÀÇ DOM Æ®¸®¸¦ °¡Áö±â ¶§¹®¿¡ Æ®¸® ¿ÜºÎÀÇ CSS ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù.
½¦µµ¿ì µ¼ ³»ºÎÀÇ CSS ¶ÇÇÑ ¿ÜºÎ¿¡ ¿µÇâÀ» ³¢Ä¡Áö ¾Ê´Â´Ù.

½¦µµ¿ì µ¼À» Ãß°¡ÇßÀ»¶§ ¿ä¼Ò Æ®¸®´Â ´ÙÀ½°ú °°´Ù.
#shadow-root ³ëµå¸¦ °¡Áø´Ù.


#shadow-root¸¦ ¿­¾î¼­ ¿ä¼Ò¸¦ »ç¿ëÇÏ¸é µÈ´Ù. »ç¿ë¹ýÀº °£´ÜÇÏ´Ù.
#shadow-root¸¦ ±»ÀÌ ´ÝÀ» ÇÊ¿ä´Â ¾ø´Ù. ÀÌÈÄ·Î º¯°æÀ» ¸øÇÏ°Ô ÇÒ·Á¸é ´Ý´Â°Ô ÁÁ´Ù.
ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº ¾Æ·¡ ¿¹Á¦¸¦ º¸¸é ¾Ë¼ö ÀÖÀ» °ÍÀÌ´Ù.

#shadow-root ¿­±â

const root = element.attachShadow({mode: 'open'});
console.log(element.shadowRoot); // okay

#shadow-root ´Ý±â

const root = element.attachShadow({mode: 'closed'});
console.log(element.shadowRoot); // null

½¦µµ¿ì µ¼À» Àû¿ë ¾ÈÇßÀ»¶§


<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<style>
<style>
div { background-color: gold; }
</style>

</head>
<body>
<div>ÀÏÀº ÇϳªÀÌ´Ù</div>
<div>ÀÌ´Â µÑÀÌ´Ù</div>
<div>»ïÀº ¼ÂÀÌ´Ù</div>

<script>
var element = document.createElement('div')
document.body.appendChild(element);
element.innerHTML =
   '<style>div { background-color: green; }</style><div>³ÝÀº ±×¸°ÀÌ´Ù!</div>'
</script>
</body>
</html>

Å×½ºÆ®: shadow_dom_org.html

½ÇÇà È­¸é : ³ªÁß¿¡ ¼³Á¤ÇÑ CSS ¼Ó¼ºÀÌ Àüü¿¡ ¿µÇâÀ» ³¢Ä£´Ù.



½¦µµ¿ì µ¼À» Àû¿ë ÇßÀ»¶§

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<style>
div { background-color: gold; }
</style>

</head>
<body>
<div>ÀÏÀº ÇϳªÀÌ´Ù</div>
<div>ÀÌ´Â µÑÀÌ´Ù</div>
<div>»ïÀº ¼ÂÀÌ´Ù</div>

<script>
var element = document.createElement('div')
document.body.appendChild(element);
var shadow = element.attachShadow({mode: 'open'});
shadow.innerHTML
  = '<style>div { background-color: green; }</style><div>³ÝÀº ±×¸°ÀÌ´Ù!</div>';
</script>
</body>
</html>

Å×½ºÆ® : shadow_dom_test.html

½ÇÇà È­¸é :  CSS ½ºÅ¸ÀÏÀÌ #shadow-root¸¸ ¿µÇâÀ» ³¢Ä£´Ù.



Âü°í)
https: //kyu.io/ko/À¥-ÄÄÆ÷³ÍÆ®3 - ½¦µµ¿ì-µ¼shadow-dom/
https://developers.google.com/web/fundamentals/web-components/shadowdom?hl=ko
https://sbfl.net/blog/2016/07/17/shadow-dom-v1/