Это сила и боль shadowDOM.
ShadoDOM был создан, чтобы разрешить изолированную программную среду HTML и CSS.
Это означает, что если вы собираетесь поместить некоторый HTML в shadowDOMтогда вам также нужно разместить CSS в том же shadowDOM.Если вы планируете использовать многослойный shadowDOM, вам нужно разместить необходимый CSS в каждом слое.
<my-el>
#shadowRoot
// Styles must go here
<inner-el>
#shadowRoot
// styles must also go here
<ion-button>
<ion-icon slot="icon-only" name="search"></ion-icon>
</ion-button>
</inner-el>
<ion-button>
<ion-icon slot="icon-only" name="search"></ion-icon>
</ion-button>
</my-el>
В приведенном выше примере, поскольку shadowDOM - это песочница, нам нужно разместить настройку, если <ion-button>
внутри каждого shadowRoot / shadowDOM.
Самый простой способ сделать это - использовать тег <link>
.Создайте файл CSS, который определяет только то, как вы хотите, чтобы ваш <ion-button>
выглядел, а затем добавьте <link href="pathToCss" rel="stylesheet">
в каждый shadowDom.
Хотя мы можем пожелать, чтобы существовал более простой способ, пока спецификация не изменится, этоСамый простой способ правильно оформить ваши внутренние элементы.