• 前端开发社区前端开发社区
    • 首页
    • VUE.js
    • React.js
    • HTML
    • CSS
    • JavaScript
    • PHP
    • jquery
    • Java
    • MySQL
    • uniapp
    前端开发社区
    当前位置:首页 > JavaScript

    js实现菜单导航

    2026-04-03 23:52:33JavaScript

    js实现菜单导航

    实现菜单导航的JavaScript方法

    创建HTML结构

    <nav id="mainMenu">
      <ul>
        <li><a href="#home">首页</a></li>
        <li><a href="#services">服务</a></li>
        <li><a href="#about">关于</a></li>
        <li><a href="#contact">联系</a></li>
      </ul>
    </nav>

    添加CSS样式

    #mainMenu {
      background-color: #333;
    }
    
    #mainMenu ul {
      list-style-type: none;
      margin: 0;
      padding: 0;
      display: flex;
    }
    
    #mainMenu li {
      padding: 15px;
    }
    
    #mainMenu a {
      color: white;
      text-decoration: none;
    }
    
    #mainMenu a:hover {
      color: #4CAF50;
    }

    基本JavaScript功能实现

    document.querySelectorAll('#mainMenu a').forEach(link => {
      link.addEventListener('click', function(e) {
        e.preventDefault();
        const targetId = this.getAttribute('href');
        document.querySelector(targetId).scrollIntoView({
          behavior: 'smooth'
        });
      });
    });

    响应式菜单实现

    const menuToggle = document.createElement('button');
    menuToggle.textContent = '菜单';
    menuToggle.id = 'menuToggle';
    document.body.prepend(menuToggle);
    
    const mainMenu = document.getElementById('mainMenu');
    
    menuToggle.addEventListener('click', function() {
      mainMenu.classList.toggle('active');
    });
    
    // 添加媒体查询监听
    const mediaQuery = window.matchMedia('(min-width: 768px)');
    function handleTabletChange(e) {
      if (e.matches) {
        mainMenu.classList.remove('active');
      }
    }
    mediaQuery.addListener(handleTabletChange);

    添加CSS过渡效果

    #mainMenu {
      transition: all 0.3s ease;
    }
    
    @media (max-width: 767px) {
      #mainMenu {
        max-height: 0;
        overflow: hidden;
      }
    
      #mainMenu.active {
        max-height: 500px;
      }
    }

    当前选中菜单项高亮

    window.addEventListener('scroll', function() {
      const sections = document.querySelectorAll('section');
      const navLinks = document.querySelectorAll('#mainMenu a');
    
      sections.forEach(section => {
        const top = window.scrollY;
        const offset = section.offsetTop - 100;
        const height = section.offsetHeight;
        const id = section.getAttribute('id');
    
        if (top >= offset && top < offset + height) {
          navLinks.forEach(link => {
            link.classList.remove('active');
            if (link.getAttribute('href') === `#${id}`) {
              link.classList.add('active');
            }
          });
        }
      });
    });

    添加CSS高亮样式

    #mainMenu a.active {
      color: #4CAF50;
      font-weight: bold;
    }

    这些代码组合实现了一个完整的菜单导航系统,包含基本功能、响应式设计和视觉反馈效果。可以根据实际需求进行调整和扩展。

    js实现菜单导航

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

    相关文章

    js实现

    js实现

    JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

    js实现日历

    js实现日历

    实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

    js实现选项卡

    js实现选项卡

    实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

    js实现图片放大缩小

    js实现图片放大缩小

    实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

    css制作菜单

    css制作菜单

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

    js 实现链表

    js 实现链表

    链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

    最新文章
    • java子类如何调用父类的方法

      2026-04-09 08:54:50

    • java如何定义一个类

      2026-04-09 08:51:25

    • java 如何四舍五入

      2026-04-09 08:49:47

    • java如何四舍五入

      2026-04-09 08:48:15

    • java如何输出数组中的数组

      2026-04-09 08:45:31

    标签列表
    • vue (13931)
    • 原理 (626)
    • 分页 (603)
    • 跳转 (582)
    • 页面 (1094)
    • 路由 (650)
    • 列表 (473)
    • 功能 (1256)
    • 文件 (456)
    • 项目 (532)
    • 菜单 (444)
    • 组件 (1026)
    • 表格 (673)
    • 数据 (497)
    • 图片 (790)
    • js (4916)
    • 如何实现 (1693)
    • 效果 (625)
    • react (3311)
    • jquery (2238)
    • css (2728)
    • php (4572)
    • java (3021)
    • uniapp (1363)
    • elementui (828)

    陕ICP备2023000799号  网站地图

    Powered By Z-BlogPHP. Theme by TOYEAN.