☰
前端开发社区前端开发社区
  • 首页
  • VUE.js
  • React.js
  • HTML
  • CSS
  • JavaScript
  • PHP
  • jquery
  • Java
  • MySQL
  • uniapp
前端开发社区
当前位置:首页 > JavaScript

js实现汉堡收缩

2026-02-02 14:07:33JavaScript

实现汉堡菜单的收缩功能

HTML结构需要包含汉堡按钮和菜单内容

<button class="hamburger">☰</button>
<nav class="menu">
  <a href="#">首页</a>
  <a href="#">产品</a>
  <a href="#">关于</a>
  <a href="#">联系</a>
</nav>

CSS样式设置初始状态和动画效果

.menu {
  display: none;
  transition: all 0.3s ease;
}

.menu.active {
  display: block;
}

.hamburger {
  background: none;
  border: none;
  font-size: 24px;
  cursor: pointer;
}

JavaScript实现切换功能

js实现汉堡收缩

const hamburger = document.querySelector('.hamburger');
const menu = document.querySelector('.menu');

hamburger.addEventListener('click', () => {
  menu.classList.toggle('active');
});

添加动画效果增强体验

修改CSS添加平滑过渡

.menu {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease-out;
}

.menu.active {
  max-height: 500px;
}

响应式设计实现

通过媒体查询控制显示方式

js实现汉堡收缩

@media (min-width: 768px) {
  .hamburger {
    display: none;
  }

  .menu {
    display: flex;
    max-height: none;
  }
}

优化可访问性

添加ARIA属性

<button class="hamburger" aria-expanded="false" aria-controls="menu">☰</button>
<nav class="menu" id="menu">
  <!-- 菜单项 -->
</nav>

更新JavaScript

hamburger.addEventListener('click', () => {
  const isExpanded = hamburger.getAttribute('aria-expanded') === 'true';
  hamburger.setAttribute('aria-expanded', !isExpanded);
  menu.classList.toggle('active');
});

使用CSS变量控制样式

定义可自定义的变量

:root {
  --menu-bg: #333;
  --menu-item-color: white;
  --transition-time: 0.3s;
}

.menu {
  background: var(--menu-bg);
  transition: max-height var(--transition-time) ease-out;
}

.menu a {
  color: var(--menu-item-color);
}

标签: js
分享给朋友:

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

最新文章
  • java子类如何调用父类的方法

    2026-04-09 08:54:50

  • java如何定义一个类

    2026-04-09 08:51:25

  • java 如何四舍五入

    2026-04-09 08:49:47

  • java如何四舍五入

    2026-04-09 08:48:15

  • java如何输出数组中的数组

    2026-04-09 08:45:31

标签列表
  • vue (13931)
  • 原理 (626)
  • 分页 (603)
  • 跳转 (582)
  • 页面 (1094)
  • 路由 (650)
  • 列表 (473)
  • 功能 (1256)
  • 文件 (456)
  • 项目 (532)
  • 菜单 (444)
  • 组件 (1026)
  • 表格 (673)
  • 数据 (497)
  • 图片 (790)
  • js (4916)
  • 如何实现 (1693)
  • 效果 (625)
  • react (3311)
  • jquery (2238)
  • css (2728)
  • php (4572)
  • java (3021)
  • uniapp (1363)
  • elementui (828)

陕ICP备2023000799号  网站地图

Powered By Z-BlogPHP. Theme by TOYEAN.