js实现具有高亮显示效果的多级菜单代码

实现具有高亮显示效果的多级菜单代码需要以下步骤:

1.准备HTML结构

首先,需要准备一个基本的HTML结构。我们可以使用无序列表(ul)和有序列表(ol)来构建多级菜单。例如,下面是一个三级菜单结构:

<ul>
  <li><a href="#">一级菜单</a>
    <ul>
      <li><a href="#">二级菜单</a>
        <ul>
          <li><a href="#">三级菜单</a></li>
          <li><a href="#">三级菜单</a></li>
          <li><a href="#">三级菜单</a></li>
        </ul>
      </li>
      <li><a href="#">二级菜单</a></li>
      <li><a href="#">二级菜单</a></li>
    </ul>
  </li>
  <li><a href="#">一级菜单</a></li>
  <li><a href="#">一级菜单</a></li>
</ul>

2.使用CSS样式美化菜单

接下来,使用CSS样式对菜单进行美化。为了实现高亮显示效果,需要添加一个.hover类,用来表示鼠标移动到某个菜单项时的样式。同时,还要设置子菜单的样式,使其可以垂直显示。例如:

ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

li {
  position: relative;
}

a {
  display: block;
  padding: 10px;
  text-decoration: none;
  color: #333;
}

ul ul {
  position: absolute;
  top: 0;
  left: 100%;
  min-width: 200px;
  background-color: #f9f9f9;
  display: none;
}

li:hover > ul {
  display: block;
}

.hover {
  background-color: #c9c9c9;
}

.hover a {
  color: #fff;
}

3.使用JavaScript代码添加事件监听器

最后,需要使用JavaScript代码来添加事件监听器,实现点击菜单项时的高亮显示效果。可以使用事件委托技术,将事件监听器绑定在祖先元素上。当用户点击菜单项时,JavaScript代码会查找到该菜单项的祖先元素,并添加.hover类。同时,还要将同级菜单项的.hover类移除,保证每次只有一个菜单项被高亮显示。例如:

var menu = document.querySelector('ul');

menu.addEventListener('click', function(event) {
  var target = event.target;
  if (target.tagName === 'A') {
    event.preventDefault();
    var li = target.parentNode;
    var siblings = li.parentNode.children;
    for (var i = 0; i < siblings.length; i++) {
      var sibling = siblings[i];
      if (sibling !== li) {
        sibling.classList.remove('hover');
      }
    }
    li.classList.add('hover');
  }
});

这样就实现了一个具有高亮显示效果的多级菜单代码。下面分别给出两个示例说明。

示例一:基本菜单

以下是一个基本的两级菜单,当用户点击菜单项时,会高亮显示当前菜单项,同时去除同级菜单项的高亮。

<ul>
  <li><a href="#">首页</a></li>
  <li><a href="#">产品</a>
    <ul>
      <li><a href="#">产品1</a></li>
      <li><a href="#">产品2</a></li>
      <li><a href="#">产品3</a></li>
    </ul>
  </li>
  <li><a href="#">关于我们</a></li>
</ul>
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

li {
  position: relative;
}

a {
  display: block;
  padding: 10px;
  text-decoration: none;
  color: #333;
}

ul ul {
  position: absolute;
  top: 0;
  left: 100%;
  min-width: 200px;
  background-color: #f9f9f9;
  display: none;
}

li:hover > ul {
  display: block;
}

.hover {
  background-color: #c9c9c9;
}

.hover a {
  color: #fff;
}
var menu = document.querySelector('ul');

menu.addEventListener('click', function(event) {
  var target = event.target;
  if (target.tagName === 'A') {
    event.preventDefault();
    var li = target.parentNode;
    var siblings = li.parentNode.children;
    for (var i = 0; i < siblings.length; i++) {
      var sibling = siblings[i];
      if (sibling !== li) {
        sibling.classList.remove('hover');
      }
    }
    li.classList.add('hover');
  }
});

示例二:三级菜单

以下是一个三级菜单,当用户点击菜单项时,会高亮显示当前菜单项,同时去除同级菜单项的高亮,并且展开下一级菜单。

<ul>
  <li><a href="#">首页</a></li>
  <li><a href="#">产品</a>
    <ul>
      <li><a href="#">产品1</a></li>
      <li><a href="#">产品2</a></li>
      <li><a href="#">产品3</a>
        <ul>
          <li><a href="#">产品3.1</a></li>
          <li><a href="#">产品3.2</a></li>
          <li><a href="#">产品3.3</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><a href="#">关于我们</a></li>
</ul>
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

li {
  position: relative;
}

a {
  display: block;
  padding: 10px;
  text-decoration: none;
  color: #333;
}

ul ul {
  position: absolute;
  top: 0;
  left: 100%;
  min-width: 200px;
  background-color: #f9f9f9;
  display: none;
}

li:hover > ul {
  display: block;
}

.hover {
  background-color: #c9c9c9;
}

.hover a {
  color: #fff;
}
var menu = document.querySelector('ul');

menu.addEventListener('click', function(event) {
  var target = event.target;
  if (target.tagName === 'A') {
    event.preventDefault();
    var li = target.parentNode;
    var siblings = li.parentNode.children;
    for (var i = 0; i < siblings.length; i++) {
      var sibling = siblings[i];
      if (sibling !== li) {
        sibling.classList.remove('hover');
      }
    }
    li.classList.add('hover');
  }
});

以上就是实现具有高亮显示效果的多级菜单代码的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现具有高亮显示效果的多级菜单代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • Javascript动画效果(1)

    针对“Javascript动画效果(1)”这个主题,以下是完整的攻略详解: 前言 在现代Web开发中,动画已成为吸引用户注意力和改善用户体验的重要组成部分之一。Javascript是Web开发中最常用的脚本语言之一,也可以轻松实现各种动画效果。在这篇文章中,我们将探讨如何利用Javascript实现动画效果。 关于动画效果 在Web开发中,实现动画效果最常见…

    JavaScript 2023年6月10日
    00
  • JS常见算法详解

    JS常见算法详解 前言 本文将给读者介绍JS中常见的算法,包括排序、查找等。算法是程序设计的基础,对于程序员来说,学好算法是非常重要的。相信通过学习本文,读者可以对算法有更加深入的理解。 排序算法 冒泡排序 冒泡排序算法采用交换方式,将待排序数组中相邻的两个数进行比较,较大的数后移一位,较小的数前移一位。经过一次遍历,最大的数就被交换到了最后。不断重复这个过…

    JavaScript 2023年5月18日
    00
  • JS实现清除指定cookies的方法

    清除指定的cookie,可以使用以下JS代码: function clearCookie(name) { document.cookie = name + ‘=;expires=Thu, 01 Jan 1970 00:00:01 GMT;’; } 此代码中,我们定义了一个clearCookie函数,这个函数需要传递一个cookie名作为参数。在函数内部,我们…

    JavaScript 2023年6月11日
    00
  • JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)

    JavaScript是一种广泛使用的编程语言,Web开发中使用JavaScript将会发挥重要作用。而输出信息是开发中的一个重要部分,下面将对JavaScript中输出信息的三种方法进行详细讲解: 信息确认框 信息确认框是在需要用户进行确认或者操作之前给予用户的提示窗口。JavaScript提供了一个窗口对象来进行交互,该对象中的confirm方法可以用于生…

    JavaScript 2023年5月28日
    00
  • 浅谈JavaScript中内存泄漏的几种情况

    浅谈 JavaScript 中内存泄漏的几种情况 JavaScript 作为一门动态语言,具有自动垃圾回收机制,可以自动管理内存,以使程序运行更加高效。然而,由于某些原因,一些对象可能会无法被垃圾收集器正确回收,导致内存泄漏。本文将介绍几种常见的 JavaScript 内存泄漏情况。 1. 全局变量 在 JavaScript 中,变量分为全局变量和局部变量。…

    JavaScript 2023年6月10日
    00
  • JavaScript调试的多个必备小Tips

    JavaScript调试的多个必备小Tips 1. 使用控制台调试 控制台是JavaScript调试过程中不可或缺的工具之一,可以使用控制台输出变量值、调用函数、查看错误信息等。常用的控制台命令包括: console.log():输出变量值或文本信息到控制台。 console.error():输出错误信息到控制台。 console.info():输出信息到控…

    JavaScript 2023年6月11日
    00
  • JavaScript正则表达式实现注册信息校验功能

    下面是详细的JavaScript正则表达式实现注册信息校验功能的攻略。 什么是正则表达式? 正则表达式是用于描述文本模式的方法。它被广泛用于搜索、替换、验证文本,并且非常强大、灵活。 正则表达式的基本规则 在正则表达式中,所有非特殊字符都表示它本身。特殊字符则有不同的含义,用于描述匹配的规则。例如: ^:起始位置 $:结束位置 .:任意字符 *:表示匹配前面…

    JavaScript 2023年6月10日
    00
  • 用Json实现PHP与JavaScript间数据交换的方法详解

    标题:用Json实现PHP与JavaScript间数据交换的方法详解 正文: 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言的一个子集,可以被多种编程语言读取和生成。JSON格式的数据可以被Web应用中的JavaScript直接读取,并且可以方便地用于PHP和Jav…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部