当前位置:首页 > 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实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

css制作菜单

css制作菜单

CSS 制作菜单的方法 使用 CSS 可以制作多种风格的菜单,包括水平菜单、垂直菜单、下拉菜单等。以下是几种常见的实现方式。 水平菜单 水平菜单通常用于导航栏,可以通过 display: inlin…

css制作下拉菜单

css制作下拉菜单

使用纯CSS制作下拉菜单 通过HTML和CSS可以创建无需JavaScript的下拉菜单,主要利用:hover伪类和display属性控制显示隐藏。 HTML结构示例: <div class…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…