在 Shadow DOM 中,覆盖 CSS 正文 *



我有以下情况:

我的问题的打印屏幕

我在项目中有一个CSS(我无法更改(,定义了以下内容:

body * {
font-family: 'x'
}

这个CSS正在影响我的影子DOM,因此,我不能使用font-family属性而不使用!important。只有!重要作品:

::slotted(span), ::slotted(p){
font-family: arial !important;
}

有谁知道在这种情况下该怎么办?

回答这个问题所需的大部分信息都可以在这个相关的答案中找到。 总结:没有!important的文档范围样式将始终覆盖没有!important的阴影 dom 样式,如果它们适用于同一元素。

(在这种情况下,它们确实适用于相同的元素:槽元素存在于阴影 dom 之外,因此文档样式表中*规则都可以找到它们。

您已经找到了两种解决方法。 为了完整起见,我将在此处列出它们:

使用 !重要:

这很丑陋,但它确实有效。!important不仅覆盖任何和所有非!important规则,而且还覆盖来自文档范围样式表的任何!important规则!

body *规则减少到仅body

这样,规则不会直接应用于每个元素 - 它只会直接应用于body,并通过继承影响所有其他元素。 继承的规则可以被任何内容覆盖,因为它们只是在没有其他适用的情况下的后备。

最新更新