• <…">
    当前位置:首页 > 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
    分享给朋友:

    相关文章

    css二级菜单制作

    css二级菜单制作

    使用纯CSS实现二级菜单 通过嵌套HTML结构和CSS选择器实现二级菜单的显示与隐藏效果。以下是一个基础实现方案: HTML结构: <ul class="menu"> <li…

    vue.js实现轮播

    vue.js实现轮播

    Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

    js实现瀑布流

    js实现瀑布流

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

    js实现预览

    js实现预览

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

    js实现二叉树

    js实现二叉树

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

    js实现防洪

    js实现防洪

    防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…