javascript - 对 :host CSS pseudo class 应用更深入的选择

标签 javascript css css-selectors web-component pseudo-class

我正在制作一个自定义元素,并且一直在寻找一种为与影子 DOM 关联的 :host 伪类添加更多特异性的方法。根据我的理解,它用于选择实际的自定义元素本身。例如,如果我有一个名为 my-elem 的元素,它附加了一个影子 DOM,则 :host 伪类将相当于 my-elem 下的类 在全局样式表中。

由此,我想尝试进一步指定选择器,以便我可以根据其状态设置自定义元素的样式,例如::host:not(.active)。但是,我确实找不到任何有关 :host 的进一步特异性的读物,并且使用上述内容不起作用。

我也尝试过传统的 :host.active 甚至厚颜无耻的 :host[active] 但它们都不起作用。

所以我想问一下这是否可能。我已经在网上进行了一些搜索,但网上似乎并没有太多关于此事的信息,我觉得这可能是不可能的,所以我可能必须降低一个级别并将事件类应用到包装器状态更改时自定义元素的变化。

我只是想这样做,因为它允许我以编程方式从其父级元素设置样式(我将事件/非事件样式应用于自定义元素表单的自定义幻灯片)。

提前谢谢您。

最佳答案

  • :host(.active)用于类选择器符号:

    <强> <my-element class="active" ></my-element>"

.

  • :host([active])用于属性选择器符号:

    <强> <my-element active="..." ></my-element>"

.

我认为您的意思是使用 :active伪类,如:hover

https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes

正确语法:

:host(:active){
  color:yellow;
}

如果您还有:hover在你的元素中:

:host(:hover){
  color:green;
}

然后您需要使用以下方法强制特异性 ( https://css-tricks.com/specifics-on-css-specificity/ ):

:host(:active:active){
  color:yellow;
}

:则不是表示法:

:host(:not(:active)){
  color:grey;
}

当然:hover具有更高的特异性

所以要做:hover再次工作,需要增加Specificity:

:host(:hover:hover){
  color:green;
}

关于javascript - 对 :host CSS pseudo class 应用更深入的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59703607/

相关文章:

css - 选择器中的数字会出现在哪里?

css - 选择正文 :before with RSpec/XPath/CSS

CSS:当一个页面的左右两侧都有一个页面在它下面时,这叫做什么?

javascript - 如何更改 Facebook 登录按钮的样式?

javascript - 如何从td中获取值

javascript - 远程 css 背景图像未加载

html - 让div在它跳下来之前缩小

html - 如何使用 CSS3 选择层次结构中的最后一个元素?

javascript - 在点击位置创建弹出窗口

javascript - 为什么 'formData' 在 React Native Android 模拟器的 'axios 0.26.1' 中不起作用?