我有以下情况:
我的问题的打印屏幕
我在项目中有一个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
,并通过继承影响所有其他元素。 继承的规则可以被任何内容覆盖,因为它们只是在没有其他适用的情况下的后备。