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

Vaadin 24侧边导航:折叠时仅显示图标隐藏标签的实现方法

解决方案

要实现折叠抽屉时仅保留图标、隐藏标签并固定60px宽度,可通过自定义CSS配合少量Java代码调整实现,具体步骤如下:

1. 给SideNav添加自定义类

在创建SideNav的代码中添加自定义类名,方便后续CSS精准定位:

SideNav nav = createSideNav();
nav.addClassName("compact-side-nav"); // 添加自定义类标识

2. 编写自定义CSS规则

在项目的frontend/styles/styles.css文件中添加以下样式(无此文件则新建):

/* 抽屉折叠时,固定抽屉宽度为60px并保留过渡动画 */
vaadin-app-layout[drawer-opened=false] [slot="drawer"] {
  width: 60px;
  min-width: 60px;
  max-width: 60px;
  transition: width 0.2s ease;
}

/* 折叠状态下隐藏侧边菜单项的标签文本 */
vaadin-app-layout[drawer-opened=false] .compact-side-nav .vaadin-side-nav-item__label {
  display: none;
}

/* 折叠状态下让图标居中,占满菜单项宽度 */
vaadin-app-layout[drawer-opened=false] .compact-side-nav .vaadin-side-nav-item__prefix {
  width: 100%;
  justify-content: center;
}

3. 确保CSS正确引入

若默认配置未自动加载styles.css,可在主视图类上添加注解引入:

@CssImport("./styles/styles.css")
public class MainView extends AppLayout {
  // 视图逻辑代码
}

原理说明

Vaadin的AppLayout在抽屉折叠时会自动添加drawer-opened=false属性,我们以此为条件编写CSS规则:

  • 覆盖默认折叠后的抽屉宽度,固定为60px
  • 隐藏SideNavItem内置的标签元素.vaadin-side-nav-item__label
  • 调整图标容器布局,确保图标在窄抽屉中居中显示

该方案完全兼容Vaadin原生的DrawerToggle切换逻辑,不会与内置机制冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:12:39