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

如何在Vaadin Flow的Tabs组件中添加视觉分隔符?

在Vaadin Flow的Tabs组件标签间添加视觉分隔符的解决方案

你无法直接向Tabs组件添加Hr元素,因为Tabs仅接受Tab类型的子组件,这是组件API的限制。不过可以通过以下两种方式实现视觉分隔效果:

方案一:CSS伪元素/边框实现(推荐)

通过自定义CSS给Tab元素添加分隔线,无需额外组件,更符合Vaadin组件设计规范。

  1. 给Tabs组件添加自定义类名:
Tabs tabs = new Tabs();
tabs.addClassName("vertical-tabs-with-dividers"); // 添加自定义类
// 后续添加Tab的逻辑不变
Tab jobsTab = VaadinUtils.createVerticalTab(VaadinIcon.WORKPLACE, getTranslation("jobs.catalog"), AllJobsView.class, null);
tabs.add(jobsTab);
  1. 添加全局CSS样式(可放在frontend/styles/shared-styles.css中):
/* 针对纵向Tabs的分隔线 */
.vertical-tabs-with-dividers vaadin-tab:not(:first-child) {
  border-top: 1px solid var(--lumo-contrast-10pct);
  margin-top: var(--lumo-space-xs);
  padding-top: var(--lumo-space-xs);
}

该样式会给除第一个Tab外的所有Tab添加顶部边框,同时调整边距和内边距,匹配你期望的分隔效果。

方案二:使用空Tab作为分隔符

如果需要手动控制分隔位置,可以创建无内容的Tab,通过样式将其变成分隔线:

  1. 创建分隔符Tab并添加到Tabs中:
Tabs tabs = new Tabs();
Tab jobsTab = VaadinUtils.createVerticalTab(VaadinIcon.WORKPLACE, getTranslation("jobs.catalog"), AllJobsView.class, null);
tabs.add(jobsTab);

// 创建分隔符Tab
Tab divider = new Tab();
divider.addClassName("tab-divider");
tabs.add(divider);

// 添加下一个Tab
Tab anotherTab = VaadinUtils.createVerticalTab(VaadinIcon.USER, getTranslation("users"), UsersView.class, null);
tabs.add(anotherTab);
  1. 对应的CSS样式:
.tab-divider {
  height: 1px;
  background-color: var(--lumo-contrast-10pct);
  padding: 0;
  margin: var(--lumo-space-xs) 0;
  cursor: default; /* 避免分隔符被点击选中 */
}

效果说明

两种方案都能实现你期望的标签间视觉分隔效果,方案一更简洁易维护,方案二更灵活可控,可根据实际需求选择。

内容的提问来源于stack exchange,提问作者alexanoid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:50:32