JS中用三种方式实现导航菜单中的二级下拉菜单

以下是JS中用三种方式实现导航菜单中的二级下拉菜单的完整攻略:

1. 通过CSS实现菜单的基本样式

在HTML代码中定义导航菜单的基本结构和CSS样式,可以使用hover伪类实现鼠标滑过菜单项时菜单的展示和隐藏效果。示例代码如下:

<ul class="menu">
  <li><a href="#">Menu Item 1</a>
    <ul>
      <li><a href="#">Submenu Item 1-1</a></li>
      <li><a href="#">Submenu Item 1-2</a></li>
    </ul>
  </li>
  <li><a href="#">Menu Item 2</a>
    <ul>
      <li><a href="#">Submenu Item 2-1</a></li>
      <li><a href="#">Submenu Item 2-2</a></li>
    </ul>
  </li>
</ul>

<style>
.menu ul {
  display: none;
  position: absolute;
  left: 0;
  top: 100%;
}
.menu li:hover > ul {
  display: block;
}
</style>

具体实现效果可查看Codepen:https://codepen.io/rookiecoder2018/pen/QWvJXaJ

2. 通过JavaScript实现菜单的展开和收起

通过JavaScript代码动态控制菜单的展开和收起,可以在HTML代码中添加点击事件。示例代码如下:

<ul class="menu">
  <li><a href="#">Menu Item 1</a>
    <ul>
      <li><a href="#">Submenu Item 1-1</a></li>
      <li><a href="#">Submenu Item 1-2</a></li>
    </ul>
  </li>
  <li><a href="#">Menu Item 2</a>
    <ul>
      <li><a href="#">Submenu Item 2-1</a></li>
      <li><a href="#">Submenu Item 2-2</a></li>
    </ul>
  </li>
</ul>

<script>
var menuItems = document.querySelectorAll('.menu > li');
for (var i = 0; i < menuItems.length; i++) {
  menuItems[i].addEventListener('click', function() {
    var subMenu = this.querySelector('ul');
    subMenu.classList.toggle('open');
  });
}
</script>

<style>
.menu ul {
  display: none;
  position: absolute;
  left: 0;
  top: 100%;
}
.menu ul.open {
  display: block;
}
</style>

具体实现效果可查看Codepen:https://codepen.io/rookiecoder2018/pen/YzWEXzR

3. 通过第三方库实现菜单的交互效果

通过使用第三方库,可以快速实现复杂的交互效果,比如菜单的滑动、渐变等动画。比较常用的第三方库有jQuery、Bootstrap、Foundation等。示例代码如下:

<ul class="dropdown-menu">
  <li><a href="#">Dropdown Item 1</a></li>
  <li><a href="#">Dropdown Item 2</a></li>
  <li class="dropdown-submenu">
    <a href="#">Dropdown Item 3</a>
    <ul class="dropdown-menu">
      <li><a href="#">Submenu Item 3-1</a></li>
      <li><a href="#">Submenu Item 3-2</a></li>
    </ul>
  </li>
  <li class="dropdown-submenu">
    <a href="#">Dropdown Item 4</a>
    <ul class="dropdown-menu">
      <li><a href="#">Submenu Item 4-1</a></li>
      <li><a href="#">Submenu Item 4-2</a></li>
    </ul>
  </li>
</ul>

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

<script>
$('.dropdown-submenu > a').on("click", function(e){
  var submenu = $(this).next('ul');
  if (submenu.is(':visible')) {
    submenu.hide();
  } else {
    submenu.show();
  }
  e.stopPropagation();
  e.preventDefault();
});
</script>

具体实现效果可查看Codepen:https://codepen.io/rookiecoder2018/pen/dydbZay

综上所述,以上三种方式实现导航菜单中的二级下拉菜单均有其优点和缺点,可以根据实际需求和喜好进行选择。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中用三种方式实现导航菜单中的二级下拉菜单 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Springboot+Thymeleaf+Jpa实现登录功能(附源码)

    下面我将详细讲解“Spring Boot+Thymeleaf+JPA实现登录功能(附源码)”的完整攻略。 一、环境准备 1.安装JDK 首先要确保你的系统上已经安装了JDK。可以通过执行以下命令来检查是否已经安装成功: java -version 2.安装Maven Maven是一个项目管理工具,用于构建和管理Java项目。你可以从Maven官网下载安装包并…

    jquery 2023年5月27日
    00
  • EasyUI jQuery messager widget

    下面是 EasyUI jQuery messager widget 的完整攻略: 简介 EasyUI jQuery messager widget 是基于 jQuery 和 EasyUI 构建的消息框插件,用于快速创建消息、提示、警告、错误等各种类型的消息框,样式美观、易于使用。 安装和引入 可以使用以下方法安装 EasyUI jQuery messager…

    jquery 2023年5月13日
    00
  • jQWidgets jqxRating setValue()方法

    下面是关于jQWidgets jqxRating的setValue()方法的详细攻略。 什么是setValue()方法 setValue()方法是jQWidgets jqxRating中的一个方法,可以用于设置评分控件的初始值或者动态修改值。 方法语法与参数 setValue()方法的语法如下: setValue(value: number | string…

    jquery 2023年5月11日
    00
  • 如何在jQuery中不使用addClass()方法为一个元素添加类

    在jQuery中,可以通过使用attr()方法为一个元素添加类。以下是具体步骤: 步骤1:找到要添加类的元素 首先,我们需要找到要添加类的元素。可以通过$函数选定元素或者通过其他选择器方法,如find()或closest()获取元素引用。 // 选定一个元素 var $element = $(‘#my-element’); // 获取元素引用 var $pa…

    jquery 2023年5月13日
    00
  • JQuery hasData()方法

    jQuery.hasData()方法用于检查元素是否有与之关联的数据。本文将详细介绍hasData()方法的语法和用法,并提供两个示例说明。 语法 以下是hasData()方法的基本语法: jQuery.hasData(element) 在这个语法中,element是要检查的元素。hasData()方法将返回一个布尔值,指示元素是否有与之关联的数据。 示例1…

    jquery 2023年5月9日
    00
  • Jquery1.9.1源码分析系列(十五)动画处理之外篇

    这是针对“Jquery1.9.1源码分析系列(十五)动画处理之外篇”这篇文章的完整攻略。以下是详细的解释: 1. 了解jQuery动画的基础 在本篇文章中,作者通过对jQuery动画的基础进行讲解,包括如何封装动画队列、如何使用fx对象管理动画、封装动画函数、以及通过定时器和requestAnimationFrame控制动画执行的流程。 2. 实例1:使用动…

    jquery 2023年5月27日
    00
  • jQWidgets jqxDropDownButton高度属性

    jQWidgets jqxDropDownButton高度属性 jQWidgets是一个基于jQuery的UI组件库,提供了丰富的UI组件和工具,包括表格、日历、下拉菜单等。jqxDropButton是jQWidgets中的一个组件,用于创建下拉菜单按钮。height属性是jqxDropDownButton中的一个属性,用于设置下拉菜单按钮的高度。 heig…

    jquery 2023年5月9日
    00
  • jQWidgets jqxLoader close()方法

    jQWidgets jqxLoader创建事件详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxLoader是组件之一。本文将详介绍jqxLoader的创建事件,包括用法、语法和示例。 创建事件的基本语法 创建事件的基本语法如下: $(‘#jqxLoader’).on(‘created’, function (eve…

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