• 前端开发社区前端开发社区
    • 首页
    • 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
    分享给朋友:

    相关文章

    vue实现下拉菜单

    vue实现下拉菜单

    实现下拉菜单的基本结构 使用 Vue 的 v-show 或 v-if 控制下拉菜单的显示与隐藏。通过点击按钮或父元素触发下拉状态切换。 <template> <div cl…

    js实现换肤

    js实现换肤

    使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

    js实现预览

    js实现预览

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

    js实现驼峰

    js实现驼峰

    实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

    js实现防洪

    js实现防洪

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

    js计算器的实现

    js计算器的实现

    实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

    最新文章
    • js实现导航栏

      2026-04-04 01:53:45

    • js实现页面定位

      2026-04-04 01:50:25

    • js怎么实现轮播

      2026-04-04 01:49:08

    • js实现图片滑动

      2026-04-04 01:43:47

    • js实现弹幕

      2026-04-04 01:39:04

    标签列表
    • 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.