【发布时间】:2021-03-14 04:05:14
【问题描述】:
我正在尝试将::selection 样式应用于 Web 组件中的开槽元素。
这里有一个小代码来说明这个问题:
window.customElements.define('x-widget', class extends HTMLElement {
constructor() {
super();
this.attachShadow({mode: 'open'});
const template = document.createElement('template');
template.innerHTML = `
<div>TEMPLATE</div>
<div><slot></slot></div>
`;
const style = document.createElement('style');
style.textContent = `
:host {
display: content;
contain: content;
color: red;
}
:host::selection, ::selection {
background: red;
color: white;
}
::slotted(::selection) {
background: red;
color: white;
}
`;
this.shadowRoot.appendChild(style);
this.shadowRoot.appendChild(template.content.cloneNode(true));
}
});
<x-widget>CONTENT1</x-widget>
<x-widget><div>CONTENT2</div></x-widget>
这是一个演示:https://jsfiddle.net/ov4xmqsr/
选择样式适用于除<div>CONTENT2</div> 之外的所有文本。有没有办法在组件中使用伪元素选择器?
【问题讨论】:
标签: css css-selectors web-component pseudo-element