假设我有一个带有shadow根的html元素。
<my-element> #shadow-root <div class='need-target-this' /> </my-element>
我如何定位阴影根中的div?我试着用
:host(my-element.need-target-this)
但没什么用。我错过了什么?
myzjeezk1#
<style>
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>
hmae6n7t2#
万一这对某人有帮助:我用div加上ref Package 了我的元素,然后const shadow = ref.current.querySelector('my-element').shadowRootconst target = shadow?.querySelector('.need-target-this')target.style.whatever = 'value';
div
ref
const shadow = ref.current.querySelector('my-element').shadowRoot
const target = shadow?.querySelector('.need-target-this')
target.style.whatever = 'value';
2条答案
按热度按时间myzjeezk1#
<style>
标记设置shadowDOM的样式在shadowDOM内hmae6n7t2#
万一这对某人有帮助:我用
div
加上ref
Package 了我的元素,然后const shadow = ref.current.querySelector('my-element').shadowRoot
const target = shadow?.querySelector('.need-target-this')
target.style.whatever = 'value';