当前位置:首页 > 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结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现打印

js实现打印

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

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…