🎯 侧边栏滑入滑出

响应式导航菜单的经典实现,使用 translateX 实现平滑的侧边栏动画效果

使用的知识点: translateX() transition-duration 📈 transition-timing-function

交互演示

点击左上角的按钮,体验侧边栏滑入滑出效果:

💡 提示:点击左上角的菜单按钮或遮罩层来切换侧边栏

演示说明:

  • 侧边栏默认隐藏在屏幕左侧外
  • 点击按钮时,侧边栏从左侧滑入
  • 再次点击按钮或遮罩层,侧边栏滑出
  • 使用 cubic-bezier 缓动函数实现流畅动画
  • 移动端自动适配宽度

实现步骤

步骤 1:HTML 结构

创建侧边栏、切换按钮和遮罩层的基本结构:

HTML
<!-- 侧边栏 -->
<aside id="sidebar" class="sidebar">
  <div class="sidebar-header">
    <h3>导航菜单</h3>
  </div>
  <nav class="sidebar-nav">
    <a href="#">首页</a>
    <a href="#">产品</a>
    <!-- 更多导航项 -->
  </nav>
</aside>

<!-- 切换按钮 -->
<button id="toggle-btn" class="toggle-btn"></button>

<!-- 遮罩层 -->
<div id="overlay" class="overlay"></div>

步骤 2:CSS 样式

使用 translateX 将侧边栏初始位置设置在屏幕外,并添加过渡效果:

CSS
.sidebar {
  position: fixed;
  left: 0;
  top: 0;
  width: 280px;
  height: 100%;
  background: white;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);

  /* 关键:初始位置在屏幕外 */
  transform: translateX(-100%);

  /* 过渡效果 */
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  z-index: 1000;
}

/* 打开状态 */
.sidebar.open {
  transform: translateX(0);
}

/* 遮罩层 */
.overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
  z-index: 999;
}

.overlay.active {
  opacity: 1;
  visibility: visible;
}

步骤 3:JavaScript 交互

添加点击事件来切换侧边栏的打开/关闭状态:

JavaScript
const sidebar = document.getElementById('sidebar');
const toggleBtn = document.getElementById('toggle-btn');
const overlay = document.getElementById('overlay');

// 切换侧边栏
function toggleSidebar() {
  sidebar.classList.toggle('open');
  overlay.classList.toggle('active');
}

// 按钮点击事件
toggleBtn.addEventListener('click', toggleSidebar);

// 点击遮罩层关闭
overlay.addEventListener('click', toggleSidebar);

步骤 4:移动端适配

使用媒体查询优化移动端体验:

CSS
@media (max-width: 768px) {
  .sidebar {
    width: 85%;
    max-width: 320px;
  }

  .toggle-btn {
    width: 45px;
    height: 45px;
  }
}

关键要点

← 返回实战应用列表