javascript实现侧边栏折叠的核心是通过classlist.toggle切换.sidebar的collapsed类,配合css的width过渡动画(220px↔60px)及.menu-text显隐控制,并用localstorage持久化状态。

用 JavaScript 实现后台管理系统侧边栏折叠,核心是控制侧边栏容器的宽度、类名和图标状态,并配合 CSS 过渡动画。不需要框架也能轻松完成,关键是状态管理 + 类名切换 + 点击响应。
1. HTML 结构要预留折叠控制点
侧边栏容器需要一个固定 ID 或 class,同时添加一个可点击的折叠按钮(通常在顶部或底部):
- 给侧边栏加 id="sidebar" 或 class="sidebar"
- 按钮建议用 ,避免表单默认行为
- 图标可以用 Font Awesome、Iconfont 或纯字符(如「»」/「«」),动态更新文本或 class 即可
2. CSS 定义展开与折叠两种状态
用两个 class 分别表示状态,配合 transition 实现平滑缩放:
- .sidebar.collapsed:设 width 为 60px(刚好容下 logo 和图标),overflow: hidden
- .sidebar(默认):width 设为 220px 或其他常规宽度
- 所有可折叠菜单项(如 .menu-item)在 collapsed 下隐藏文字,只留图标:.collapsed .menu-text { display: none; }
- 加 transition: width 0.3s ease,让变化不突兀
3. JavaScript 绑定点击并切换状态
监听按钮点击,切换侧边栏 class,并更新按钮提示(可选):
const sidebar = document.getElementById('sidebar');
const toggleBtn = document.getElementById('toggle-sidebar');
toggleBtn.addEventListener('click', () => {
sidebar.classList.toggle('collapsed');
// 可选:更新按钮 title 或图标
if (sidebar.classList.contains('collapsed')) {
toggleBtn.title = '展开菜单';
toggleBtn.innerHTML = '»';
} else {
toggleBtn.title = '折叠菜单';
toggleBtn.innerHTML = '«';
}
});
4. 记住用户偏好(进阶)
刷新后保持上次状态,用 localStorage 存储布尔值:
- 页面加载时读取:const isCollapsed = localStorage.getItem('sidebarCollapsed') === 'true';
- 如果是 true,直接给 sidebar 添加 collapsed 类
- 在 toggle 逻辑末尾同步写入:localStorage.setItem('sidebarCollapsed', sidebar.classList.contains('collapsed'));
不复杂但容易忽略细节:确保折叠时子菜单、文字、内边距都响应 class 变化;按钮需防止重复绑定;移动端可能需额外适配显示逻辑。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











