当前位置:首页 > JavaScript

js实现菜单

2026-02-28 21:21:17JavaScript

实现基础HTML结构

使用HTML创建菜单的基本框架,通常包含<ul><li>元素。以下是一个简单示例:

<ul id="menu">
  <li><a href="#">首页</a></li>
  <li><a href="#">产品</a></li>
  <li><a href="#">服务</a></li>
  <li><a href="#">关于我们</a></li>
</ul>

添加CSS样式

通过CSS美化菜单,例如水平导航栏或下拉菜单样式:

#menu {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  background-color: #333;
}
#menu li {
  position: relative;
}
#menu li a {
  display: block;
  padding: 15px 20px;
  color: white;
  text-decoration: none;
}
#menu li a:hover {
  background-color: #555;
}

实现下拉菜单功能

使用JavaScript为菜单添加交互效果,如点击展开子菜单:

js实现菜单

document.querySelectorAll('#menu li').forEach(item => {
  if (item.querySelector('ul')) {
    item.addEventListener('click', (e) => {
      e.stopPropagation();
      item.querySelector('ul').classList.toggle('active');
    });
  }
});

对应的CSS需添加子菜单样式:

#menu ul {
  display: none;
  position: absolute;
  background-color: #444;
  width: 200px;
}
#menu ul.active {
  display: block;
}

响应式菜单适配

通过媒体查询和JavaScript实现移动端适配。例如在小屏幕下切换为汉堡菜单:

js实现菜单

const menuToggle = document.createElement('div');
menuToggle.className = 'menu-toggle';
document.body.prepend(menuToggle);
menuToggle.addEventListener('click', () => {
  document.getElementById('menu').classList.toggle('mobile-active');
});

CSS补充:

.menu-toggle {
  display: none;
  cursor: pointer;
}
@media (max-width: 768px) {
  .menu-toggle {
    display: block;
  }
  #menu {
    flex-direction: column;
    display: none;
  }
  #menu.mobile-active {
    display: flex;
  }
}

动画效果增强

使用CSS过渡或动画提升交互体验:

#menu li a {
  transition: background-color 0.3s ease;
}
#menu ul {
  transition: opacity 0.3s, transform 0.3s;
  opacity: 0;
  transform: translateY(-10px);
}
#menu ul.active {
  opacity: 1;
  transform: translateY(0);
}

键盘导航支持

为无障碍访问添加键盘操作支持:

document.querySelectorAll('#menu a').forEach(link => {
  link.addEventListener('keydown', (e) => {
    if (e.key === 'Enter') {
      e.target.click();
    }
  });
});

标签: 菜单js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

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

vue elementui实现菜单

vue elementui实现菜单

Vue ElementUI 实现菜单 安装 ElementUI 确保项目已安装 Vue 和 ElementUI。若未安装,可以通过以下命令安装: npm install element-ui 在 m…

css制作二级菜单

css制作二级菜单

使用纯CSS制作二级菜单 通过CSS的:hover伪类和子选择器实现二级菜单的显示与隐藏。以下是一个典型的结构和样式示例: HTML结构 <nav class="menu"> &l…

js实现打印

js实现打印

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

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-contain…