☰
前端开发社区前端开发社区
  • 首页
  • 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
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现打印

js实现打印

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

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现列表

js实现列表

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

最新文章
  • js实现等待几秒

    2026-02-02 15:56:51

  • js实现水印清除

    2026-02-02 15:55:32

  • js中new实现

    2026-02-02 15:54:01

  • js快捷实现语句

    2026-02-02 15:52:45

  • js手动实现getelementbyid

    2026-02-02 15:51:26

标签列表
  • vue (6159)
  • 原理 (242)
  • 拖拽 (184)
  • 分页 (221)
  • 跳转 (232)
  • 页面 (448)
  • 路由 (323)
  • 列表 (193)
  • 功能 (446)
  • 项目 (218)
  • 菜单 (174)
  • 组件 (508)
  • 表格 (275)
  • 数据 (207)
  • 图片 (267)
  • js (223)
  • 如何实现 (616)
  • 效果 (215)
  • 动态 (166)
  • 加载 (161)
  • react (1925)
  • jquery (294)
  • css (948)
  • php (441)
  • elementui (269)

陕ICP备2023000799号  网站地图

Powered By Z-BlogPHP. Theme by TOYEAN.