当前位置:首页 > 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类。

js实现抽屉

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定义样式。

js实现抽屉

<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');
  }
});

响应式适配

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

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

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

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…

jquery和js

jquery和js

jQuery与JavaScript的区别 jQuery是一个基于JavaScript的库,封装了许多常用的功能,简化了DOM操作、事件处理、动画效果等。JavaScript是原生语言,功能更全面但代码…

js实现vue模板

js实现vue模板

使用纯 JavaScript 实现 Vue 模板功能 要实现类似 Vue 的模板功能,可以通过以下步骤完成: 1. 数据绑定与响应式更新 通过 Object.defineProperty 或 Pr…

vue.js实现改

vue.js实现改

Vue.js 实现修改功能 在 Vue.js 中实现修改功能通常涉及以下几个关键步骤: 数据绑定与表单处理 使用 v-model 实现表单数据与 Vue 实例数据的双向绑定。例如修改用户信息时,表单…