当前位置:首页 > JavaScript

js实现menu

2026-02-01 14:12:05JavaScript

实现基本的HTML结构

使用HTML创建一个简单的菜单结构,通常包含<ul><li>元素。以下是一个基础示例:

<nav>
  <ul class="menu">
    <li><a href="#">首页</a></li>
    <li><a href="#">产品</a></li>
    <li><a href="#">服务</a></li>
    <li><a href="#">关于我们</a></li>
  </ul>
</nav>

添加CSS样式

为菜单添加基础样式,例如水平排列、悬停效果等:

js实现menu

.menu {
  list-style: none;
  padding: 0;
  display: flex;
  gap: 20px;
  background-color: #f0f0f0;
  padding: 10px;
}

.menu li a {
  text-decoration: none;
  color: #333;
  padding: 5px 10px;
}

.menu li a:hover {
  background-color: #ddd;
  border-radius: 4px;
}

使用JavaScript实现交互功能

通过JavaScript实现下拉菜单或动态效果。以下是一个下拉菜单的实现示例:

js实现menu

<nav>
  <ul class="menu">
    <li><a href="#">首页</a></li>
    <li>
      <a href="#">产品</a>
      <ul class="submenu">
        <li><a href="#">产品A</a></li>
        <li><a href="#">产品B</a></li>
      </ul>
    </li>
  </ul>
</nav>
document.addEventListener('DOMContentLoaded', function() {
  const menuItems = document.querySelectorAll('.menu > li');

  menuItems.forEach(item => {
    item.addEventListener('mouseenter', function() {
      const submenu = this.querySelector('.submenu');
      if (submenu) submenu.style.display = 'block';
    });

    item.addEventListener('mouseleave', function() {
      const submenu = this.querySelector('.submenu');
      if (submenu) submenu.style.display = 'none';
    });
  });
});

响应式设计适配移动端

通过媒体查询和JavaScript实现移动端适配,例如汉堡菜单:

@media (max-width: 768px) {
  .menu {
    flex-direction: column;
    display: none;
  }

  .menu.active {
    display: flex;
  }

  .hamburger {
    display: block;
    cursor: pointer;
  }
}
const hamburger = document.querySelector('.hamburger');
const menu = document.querySelector('.menu');

hamburger.addEventListener('click', function() {
  menu.classList.toggle('active');
});

使用框架或库简化开发

如果需要快速实现复杂菜单,可以借助库如React或Vue。以下是React实现的一个示例:

import React, { useState } from 'react';

function Menu() {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <nav>
      <button onClick={() => setIsOpen(!isOpen)}>菜单</button>
      {isOpen && (
        <ul>
          <li><a href="#">首页</a></li>
          <li><a href="#">产品</a></li>
        </ul>
      )}
    </nav>
  );
}

标签: jsmenu
分享给朋友:

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…