侧边栏收缩布局用 Flex 实现,核心是类名切换控制 width + transition 动画,主内容区设 flex: 1和 min-width: 0,侧边栏设初始 width、min-width: 0 且不设 flex-shrink: 0;收缩时通过 .sidebar-collapsed 切换 width 和 overflow,图标保留、文字 opacity/width 归零;小屏下媒体查询隐藏侧边栏,汉堡菜单以 fixed 覆盖层唤出。
侧边栏收缩布局用 Flex 实现,核心是利用 flex 的弹性行为 + 类名切换控制宽度,配合 CSS 过渡实现平滑收放效果,无需 JS 计算尺寸。
容器设为 display: flex,主内容区用 flex: 1 自适应剩余空间,侧边栏设初始宽度(如 width: 260px)并允许收缩:
flex: 0 0 auto(默认即可),但需加 min-width: 0 防止内容撑宽min-width: 0,否则文字或长单词可能破坏收缩逻辑flex-basis 和 flex-shrink: 0,否则无法压缩定义一个 .sidebar-collapsed 类,只改侧边栏的 width 和 overflow,不碰 flex 属性:
.sidebar { width: 260px; transition: width 0.3s ease; }.sidebar-collapsed { width: 60px; overflow: hidden; }侧边栏内元素根据宽度自动显隐,不用媒体查询:
span 包裹,初始 opacity: 1; width: auto;
.sidebar-collapsed span { opacity: 0; width: 0; },再配 overflow: hidden
flex-shrink: 0 防被压缩变形小屏下直接隐藏侧边栏,用汉堡菜单唤出:
@media (max-width: 768px) { .sidebar { display: none; } }
sidebar-open 类,用 position: fixed 覆盖层展示