Когда я вызываю host.attachShadow({mode: 'open'})
на div, содержащем несколько элементов внутри, содержимое div, по-видимому, исчезает. Элементы все еще видны из devtools, но больше не видны на экране.
Не имеет значения, если я запишу shadowRoot чем-нибудь; как только тень привязана, дети-дети исчезают.
Демо на codepen: https://codepen.io/anon/pen/VrBdOe
Почему содержимое исчезает? Я видел это на сайтах, поэтому я знаю, что это возможно. См., Например, код https://www.polymer-project.org/2.0/start/quick-tour, узел <pw-shell>
имеет теневой корень и несколько родственных братьев. Что там происходит?
Содержимое Shadow DOM заменит исходное поддерево DOM хоста, на котором он прикреплен (теневой корень). Это ожидаемое поведение Shadow DOM (отсюда и это имя).
Вы можете сделать это, используя элемент в Shadow DOM.
host.attachShadow( { mode: 'open' } )
.innerHTML = 'Original DOM: <slot></slot>, in the Shadow DOM'
<div id=host>
Lite DOM
</div>
Вы должны прочитать руководство по Shadow DOM для получения дополнительной информации.