• <…">
    当前位置:首页 > JavaScript

    js实现菜单

    2026-01-15 14:55:46JavaScript

    实现基本HTML结构

    使用HTML创建菜单的基本框架,通常包含<ul><li>元素。示例结构如下:

    <ul id="menu">
      <li><a href="#home">Home</a></li>
      <li><a href="#services">Services</a></li>
      <li><a href="#about">About</a></li>
    </ul>

    添加CSS样式

    通过CSS为菜单添加基础样式,例如水平或垂直布局、悬停效果等:

    js实现菜单

    #menu {
      list-style-type: none;
      margin: 0;
      padding: 0;
      display: flex; /* 水平菜单 */
    }
    #menu li a {
      display: block;
      padding: 8px 16px;
      text-decoration: none;
      color: #333;
    }
    #menu li a:hover {
      background-color: #eee;
    }

    实现下拉菜单功能

    通过JavaScript动态控制下拉菜单的显示/隐藏:

    document.querySelectorAll('#menu li').forEach(item => {
      if (item.querySelector('ul')) {
        item.addEventListener('mouseenter', () => {
          item.querySelector('ul').style.display = 'block';
        });
        item.addEventListener('mouseleave', () => {
          item.querySelector('ul').style.display = 'none';
        });
      }
    });

    响应式菜单实现

    使用JavaScript和CSS媒体查询实现移动端适配:

    js实现菜单

    const menuToggle = document.createElement('button');
    menuToggle.textContent = 'Menu';
    document.body.prepend(menuToggle);
    
    menuToggle.addEventListener('click', () => {
      const menu = document.getElementById('menu');
      menu.style.display = menu.style.display === 'none' ? 'block' : 'none';
    });

    添加动画效果

    通过CSS transitions或JavaScript实现平滑的菜单动画:

    #menu li ul {
      max-height: 0;
      overflow: hidden;
      transition: max-height 0.3s ease-out;
    }
    #menu li:hover ul {
      max-height: 500px; /* 足够大的值容纳内容 */
    }

    键盘导航支持

    为菜单添加无障碍访问支持:

    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实现列表

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

    js 实现分页

    js 实现分页

    实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

    css制作横向菜单

    css制作横向菜单

    使用 Flexbox 制作横向菜单 Flexbox 是制作横向菜单的现代方法,代码简洁且兼容性好。以下是一个基本实现: <nav class="horizontal-menu"> &…

    css制作二级菜单

    css制作二级菜单

    CSS制作二级菜单的方法 通过纯CSS实现二级菜单主要依赖HTML结构嵌套和CSS的:hover伪类选择器。以下是具体实现方式: HTML结构 <ul class="main-menu"&g…

    纯css制作tab菜单

    纯css制作tab菜单

    纯CSS制作Tab菜单的方法 使用radio input控制Tab切换 通过<input type="radio">和<label>元素配合:checked伪类实现Tab切换效…