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

yizhihongxing

以下是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日

相关文章

  • 如何在jQuery的文档准备事件中运行代码

    在jQuery中,可以使用文档准备事件来确保代码在文档完全加载后再运行。以下是详细的攻略,包含两个示例,演示如何在jQuery的文档准备事件中运代码: 步骤1:引入jQuery库 在使用之前,需要先在HTML文引jQuery库。可以通过以下方式引入: <script src="https://code.jquery.com/jquery-3.…

    jquery 2023年5月9日
    00
  • 详解Vue改变数组中对象的属性不重新渲染View的解决方案

    针对这个问题,我来给你提供一些解决方案。首先,让我们先来分析一下问题的根源。 在Vue中,当对象或数组中的某个元素被更改时,Vue会检测到该更改并重新渲染视图。但是,如果只是更改了对象的属性而不是对象本身,则Vue不会检测到更改,因为对象本身并没有发生变化。 因此,解决这个问题的方法就是强制Vue重新渲染视图。以下是几种常用的解决方案: 1. 使用Vue.s…

    jquery 2023年5月28日
    00
  • 如何在JQuery/Javascript中把JS对象转换成JSON字符串

    将JS对象转换成JSON字符串在JQuery/Javascript中是一个常见的操作,下面提供一个完整的攻略: 第一步:将JS对象转换成JSON格式 我们可以使用JQuery/Javascript中的JSON.stringify()函数将JS对象转换成JSON格式。该函数接收一个参数,即需要转换的对象。 例如,我们定义一个JS对象: var person =…

    jquery 2023年5月12日
    00
  • jQWidgets jqxGrid gotoprevpage()方法

    以下是关于“jQWidgets jqxGrid gotoprevpage()方法”的完整攻略,包含两个示例说明: 方法简介 jqxGrid 控件的 gotoprevpage() 方法用将 jqxGrid 控件的当前页码设置为上一页。该方法的语法如下: $("#jqGrid").jqxGrid(‘gotrevpage’); 在上述语法中,#…

    jquery 2023年5月10日
    00
  • layui使用及简单的三级联动实现教程

    下面我将对“layui使用及简单的三级联动实现教程”进行详细讲解。 什么是layui Layui是一个基于CSS/HTML和JavaScript的开源前端UI框架,特别适合后端开发者前端页面需求快速实现。Layui具有简洁的风格、响应式布局、丰富的组件库和易于上手的接口文档等优点。 layui入门 在使用layui之前,需要先在页面引入相关的css和js文件…

    jquery 2023年5月27日
    00
  • jQWidgets jqxRangeSelector render()方法

    以下是关于 jQWidgets jqxRangeSelector 组件中 render() 方法的详细攻略。 jQWidgets jqxRangeSelector render() 方法 jQWidgets jqxRangeSelector 组件 render() 方法用于重新渲选择器。 语法 // 渲染选择器 $(‘#rangeSelector’).jqx…

    jquery 2023年5月12日
    00
  • 如何使用jQuery EasyUI设计网页上的复选框选择

    下面是如何使用jQuery EasyUI设计网页上的复选框选择的完整攻略。 1. 引入jQuery和EasyUI 首先需要在页面中引入jQuery和EasyUI的js和css文件,可以从官网下载或使用CDN加速。 <link rel="stylesheet" href="https://cdn.jsdelivr.net/n…

    jquery 2023年5月12日
    00
  • 如何使用JavaScript/jQuery创建自动调整大小的textarea

    关于如何使用JavaScript/jQuery创建自动调整大小的textarea,一般需要用到以下几个步骤: 1. 使用HTML创建一个textarea元素 首先要在HTML代码中创建一个textarea元素,其中要注意设置该元素的class或id,以便在后续使用JavaScript或jQuery操作该元素。该元素的样式可以根据实际需求进行设置。 <!…

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