css 没有JS,我如何在影子根目录中定位类?

5hcedyr0  于 2023-01-27  发布在  其他
关注(0)|答案(2)|浏览(94)

假设我有一个带有shadow根的html元素。

<my-element>
#shadow-root
<div class='need-target-this' />
</my-element>

我如何定位阴影根中的div?
我试着用

:host(my-element.need-target-this)

但没什么用。我错过了什么?

myzjeezk

myzjeezk1#

customElements.define("my-element",class extends HTMLElement{
  constructor(){
    super().attachShadow({mode:"open"}).innerHTML = `
    <style>
      .target { background:hotpink; border: 5px dashed green }
      ::slotted(span) {
        color : red;
      }
    </style>
    <slot name="title"></slot>
    <span part="mytarget" class='target' />`;
  }
  connectedCallback(){
    this.shadowRoot.querySelector("span").innerHTML = `Web Component!`;
  }
});
<style>
  * { font: 42px Arial }
  span {
    background:gold; /* slot content styled by Global CSS! */
  }
  .target { border: 5px solid blue } /* does NOT style shadowDOM! */
  
  my-element::part(mytarget) {
    font-size: 150%;
  }
</style>

<my-element class="target"><span slot="title">Hello</span>

</my-element>
hmae6n7t

hmae6n7t2#

万一这对某人有帮助:我用div加上ref Package 了我的元素,然后
const shadow = ref.current.querySelector('my-element').shadowRoot
const target = shadow?.querySelector('.need-target-this')
target.style.whatever = 'value';

相关问题