☰
前端开发社区前端开发社区
  • 首页
  • 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实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现报表

js实现报表

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

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

最新文章
  • 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.