当前位置:首页 > JavaScript

js实现抽屉

2026-04-05 20:29:49JavaScript

使用HTML和CSS创建基本结构

抽屉效果通常需要一个隐藏的面板,通过触发按钮显示。HTML结构包含一个按钮和一个隐藏的抽屉面板。CSS负责初始隐藏抽屉并定义动画效果。

<button id="toggleDrawer">打开抽屉</button>
<div class="drawer" id="drawer">
  <p>抽屉内容</p>
</div>
.drawer {
  position: fixed;
  top: 0;
  left: -300px; /* 初始隐藏 */
  width: 300px;
  height: 100%;
  background: #fff;
  box-shadow: 2px 0 5px rgba(0,0,0,0.1);
  transition: left 0.3s ease;
}
.drawer.open {
  left: 0; /* 显示抽屉 */
}

添加JavaScript交互逻辑

通过监听按钮点击事件,切换抽屉的显示状态。使用classList.toggle方法动态添加或移除open类。

document.getElementById('toggleDrawer').addEventListener('click', function() {
  document.getElementById('drawer').classList.toggle('open');
});

实现滑动动画

CSS的transition属性控制动画效果。通过调整lefttransform属性实现平滑滑动。transform性能更优,适合复杂场景。

.drawer {
  transform: translateX(-100%);
  transition: transform 0.3s ease;
}
.drawer.open {
  transform: translateX(0);
}

添加遮罩层增强体验

在抽屉外添加半透明遮罩层,点击后可关闭抽屉。HTML增加遮罩元素,CSS定义样式。

<div class="overlay" id="overlay"></div>
.overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.5);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}
.overlay.active {
  opacity: 1;
  pointer-events: auto;
}
const overlay = document.getElementById('overlay');
document.getElementById('toggleDrawer').addEventListener('click', function() {
  const drawer = document.getElementById('drawer');
  drawer.classList.toggle('open');
  overlay.classList.toggle('active');
});
overlay.addEventListener('click', function() {
  document.getElementById('drawer').classList.remove('open');
  overlay.classList.remove('active');
});

支持键盘交互

监听键盘事件,按下ESC键时关闭抽屉。增强无障碍体验。

document.addEventListener('keydown', function(e) {
  if (e.key === 'Escape') {
    document.getElementById('drawer').classList.remove('open');
    document.getElementById('overlay').classList.remove('active');
  }
});

响应式适配

通过媒体查询调整抽屉宽度,确保在不同设备上正常显示。

js实现抽屉

@media (max-width: 600px) {
  .drawer {
    width: 80%;
    transform: translateX(-100%);
  }
}

标签: 抽屉js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…