




本文介绍如何通过 css 的 `transition` 属性,为折叠式导航栏按钮实现宽度变化的平滑过渡效果,重点解决因未显式定义宽度假值导致 transition 失效的问题,并提供可直接运行的优化方案。
要让 元素的 width 属性支持 CSS 过渡(transition),关键前提在于:必须为 
✅ 正确做法是:为所有导航项统一设定基础宽度,并在激活状态扩大宽度,同时启用过渡:
.navbar ul a {
display: flex;
padding: 5px 15px;
border-radius: 20px;
color: black;
text-decoration: none;
align-items: center;
gap: 5px;
/* 关键:显式设置初始宽度(推荐使用 min-width + width 组合增强兼容性) */
width: 56px; /* 图标区默认宽度(含内边距)*/
min-width: 56px;
overflow: hidden;
transition: width 0.2s ease-in-out;
}
/* 隐藏文字的初始状态 */
.navbar ul a .navbar-text {
display: none;
white-space: nowrap;
}
/* 激活态:扩展宽度并显示文字 */
.navbar ul a.active {
background-color: rgba(0, 0, 0, 0.05);
width: 140px; /* 足够容纳图标 + 文字 + 两侧 padding */
}
.navbar ul a.active .navbar-text {
display: inline;
}? 进阶建议(提升体验):
最终效果:鼠标悬停或点击切换 .active 类时,按钮将平滑地从紧凑图标态(56px)扩展为带文字的完整态(140px),视觉清晰、交互专业。