如何用css实现侧边栏收缩与展开

答案是通过CSS控制宽度和JavaScript切换类实现侧边栏收缩展开。结构上包含侧边栏、切换按钮和内容区,CSS设置默认宽度200px及过渡动画,.collapsed类将宽度变为60px并调整内边距,JavaScript通过toggleSidebar函数切换collapsed类,实现状态变化,结合.content的margin-left同步变动,确保内容区随侧边栏伸缩移动。可选优化包括使用data-icon显示图标,收缩时隐藏文字仅留图标,提升视觉效果。该方案简洁流畅,易于维护。

如何用css实现侧边栏收缩与展开

实现侧边栏的收缩与展开,核心思路是通过 CSS 控制侧边栏的宽度,并结合 JavaScript 触发状态切换。下面是一个简洁、实用的实现方式。

1. 基础结构与样式

先搭建 HTML 结构:

主内容区

CSS 设置默认展开状态,使用过渡动画让效果更自然:

.sidebar {
  width: 200px;
  height: 100vh;
  background: #333;
  color: white;
  transition: width 0.3s ease;
  overflow: hidden;
}

.sidebar.collapsed {
  width: 60px;
}

.sidebar ul {
  padding: 20px 0;
}

.sidebar li {
  padding: 10px 20px;
  text-align: center;
}

.sidebar li {
  display: block;
}

.sidebar.collapsed li {
  font-size: 12px;
  padding: 10px 0;
}

.toggle-btn {
  background: #555;
  color: white;
  padding: 10px;
  text-align: center;
  cursor: pointer;
}

.content {
  margin-left: 200px;
  padding: 20px;
  transition: margin-left 0.3s ease;
}

.sidebar.collapsed + .content {
  margin-left: 60px;
}

2. 使用 JavaScript 切换状态

添加一个简单的脚本函数来切换类名:

立即学习“前端免费学习笔记(深入)”;

Seede AI Seede AI

AI 驱动的设计工具

Seede AI 586 查看详情 Seede AI function toggleSidebar() {
  document.querySelector(‘.sidebar’).classList.toggle(‘collapsed’);
}

点击按钮时,collapsed 类会被添加或移除,CSS 过渡会自动处理宽度和外边距的变化。

3. 可选优化:图标与文字显示控制

在收缩状态下,可以只保留图标或首字母。例如:

.sidebar li::before {
  content: attr(data-icon);
  display: inline-block;
  width: 20px;
  margin-right: 10px;
}

.sidebar.collapsed li span {
  display: none;
}

然后修改 HTML:

  • 首页
  • 这样在收缩时只显示图标,展开时显示完整文字。

    基本上就这些。用 CSS 的 transition 和类切换就能实现流畅的侧边栏收展效果,搭配简单 JS 控制状态,灵活又易维护。

    以上就是如何用css实现侧边栏收缩与展开的详细内容,更多请关注创想鸟其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
    发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1067502.html

    赞 (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    Linux设置NFS共享目录
    上一篇 2025年12月2日 06:46:47
    荣耀最强标准版!荣耀200发布:2699元起
    下一篇 2025年12月2日 06:46:50

    相关推荐

    发表回复

    登录后才能评论
    关注微信