LWC使用Shadow DOM来隔离组件的CSS,这常常导致我们无法用自定义的CSS来控制LWC标准组件的样式。
下面是给lightning-datatable表头换个背景色的例子:
CSS如下:
:host {
--lwc-tableColorBackgroundHeader: #8BA1D8;
}
:host是一个CSS伪类选择器,用于选择组件的根元素。在LWC中,:host用于定义组件的全局样式。
--lwc是一个命名空间,用于定义LWC(Lightning Web Components)中的自定义CSS属性。使用命名空间,可以避免与其他组件或全局样式中的自定义属性重名。
例如,--lwc-tableColorBackgroundHeader 是一个LWC表格组件中的自定义CSS属性,用于指定表头背景颜色。通过在属性名称前加上--lwc命名空间,可以确保该属性只在LWC表格组件中使用,并且不会与其他组件或全局样式中的属性重名。
LWC还提供了其他命名空间,如--lwc-textColorPrimary和--lwc-textColorSecondary,用于指定文本颜色。这些命名空间可以帮助您更好地组织和管理您的LWC样式。
使用浏览器的开发者模式可以帮助我们确认属性的名字,可以看到下图中的th背景色就是继承自--lwc-tableColorBackgroundHeader这一属性。
额外知识点:var()函数
第一个参数是必需的,用于指定要使用的自定义CSS变量的名称。
第二个参数是可选的,用于指定备用值,如果找不到指定的自定义CSS变量,则使用备用值。