You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vaadin 14 如何使用自定义CSS类基于状态为指定Tabs组件设置样式

正确写法

场景1:样式写在全局CSS文件中

直接选中带自定义类的vaadin-tabs组件即可:

vaadin-tabs.patient-tabs [part="tabs"] ::slotted(vaadin-tab[selected]) {
  background-color: red;
  color: #002641;
}

场景2:样式用@CssImport专门注入到vaadin-tabs的Shadow DOM中

如果你的样式是通过类似下面的注解单独指定给vaadin-tabs组件的:

@CssImport(value = "./styles/patient-tabs.css", themeFor = "vaadin-tabs")

那么在patient-tabs.css中写如下样式即可:

:host(.patient-tabs) ::slotted(vaadin-tab[selected]) {
  background-color: red;
  color: #002641;
}

原写法失效原因

你之前的:host(.patient-tabs)[part~="tabs"]写法逻辑错误:

  • :host只在Shadow DOM内部的样式表中生效,指向的是当前Shadow DOM的宿主元素(也就是<vaadin-tabs>标签本身)
  • part="tabs"是<vaadin-tabs>内部Shadow DOM里的元素属性,不是宿主元素本身的属性,把它和:host写在同一层选择器里,永远匹配不到元素
  • 如果是在全局样式中写,不需要加:host,直接从外层的自定义类开始选择即可

内容的提问来源于stack exchange,提问作者despoina.k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:48:03