三级下拉菜单的js实现代码

实现三级下拉菜单需要用到js编程,下面是三级下拉菜单的JS实现代码的完整攻略。

步骤一:HTML代码

先创建一个HTML页面,用于容纳三级下拉菜单。其中需要有三个层级的<ul>标签,如下所示:

<nav>
  <ul>
    <li><a href="#">菜单1</a>
      <ul>
        <li><a href="#">子菜单1.1</a>
          <ul>
            <li><a href="#">子子菜单1.1.1</a></li>
            <li><a href="#">子子菜单1.1.2</a></li>
          </ul>
        </li>
        <li><a href="#">子菜单1.2</a></li>
      </ul>
    </li>
    <li><a href="#">菜单2</a></li>
    <li><a href="#">菜单3</a></li>
  </ul>
</nav>

步骤二:CSS代码

我们需要设置下拉菜单的样式,为此,在CSS中将以下这些样式规则应用于<ul><li>标记:

nav ul ul {
  display: none;
}
nav ul li:hover > ul {
  display: block;
}

步骤三:JS代码

现在,我们来实现JS代码,将下列代码添加到<head>标记之后:

window.onload = function() {
  var dropdowns = document.querySelectorAll('nav ul li ul');
  for (var i = 0; i < dropdowns.length; i++) {
    dropdowns[i].addEventListener('click', function(e) {
      e.stopPropagation();
    });
  }
}

此外,还需要一个函数用于在鼠标停留时切换下拉菜单。因此,应该添加以下代码:

function handleClick(e) {
  e.preventDefault();
  var submenu = this.parentNode.querySelector('ul');
  if (submenu) {
    var isVisible = submenu.style.display === 'block';
    dropdowns = document.querySelectorAll('ul ul');
    for (var i = 0; i < dropdowns.length; i++) {
      dropdowns[i].style.display = 'none';
    }
    if (!isVisible) {
      submenu.style.display = 'block';
    }
  }
}

最后,在for循环中添加下面的代码:

var toggles = document.querySelectorAll('nav ul li a');

我们的三级下拉菜单已经可以正常工作了。

示例说明

下面提供了两个例子,说明如何将上述代码应用于不同的网站。

示例一:使用CSS

基于Bootstrap框架的网站使用CSS代码来设定三级下拉菜单的宽度。网页头部如下:

<head>
  <!-- 引入Bootstrap框架 -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
  <style>
    /*调整下拉菜单的宽度*/
    .navbar .dropdown-menu .sub-menu {
      left: 100%; 
      position: absolute; 
      top: 0;
      visibility: hidden; 
      margin-top: -1px;
    }

    .navbar .dropdown-menu li:hover > .sub-menu {
      visibility: visible;
    }

    .navbar .dropdown:hover > .dropdown-menu {
      display: block;
    }   
  </style>
</head>

在列表中增加以下代码段:

<div class="navbar-collapse collapse">
  <ul class="nav navbar-nav">
    <li class="dropdown">
      <a href="#">菜单1</a>
      <ul class="dropdown-menu">
        <li><a href="#">子菜单1.1</a></li>
        <li class="dropdown dropdown-submenu">
          <a href="#">子菜单1<span class="caret"></span></a>
          <ul class="dropdown-menu sub-menu">
            <li><a href="#">子子菜单1.1.1</a></li>
            <li><a href="#">子子菜单1.1.2</a></li>
          </ul>
        </li>
      </ul>
    </li>
    <li><a href="#">菜单2</a></li>
    <li><a href="#">菜单3</a></li>
  </ul>
</div>

示例二:使用JavaScript

构建单独的JavaScript文件并使用基于函数handleClick的方法来创建三级下拉菜单。

<head>
  <script src="js/dropdown.js"></script>
  <link rel="stylesheet" href="css/style.css">
</head>

<body>
  <nav>
    <ul>
      <li><a href="#">菜单1</a>
        <ul>
          <li><a href="#">子菜单1.1</a>
            <ul>
              <li><a href="#">子子菜单1.1.1</a></li>
              <li><a href="#">子子菜单1.1.2</a></li>
            </ul>
          </li>
          <li><a href="#">子菜单1.2</a></li>
        </ul>
      </li>
      <li><a href="#">菜单2</a></li>
      <li><a href="#">菜单3</a></li>
    </ul>
  </nav>
</body>

dropdown.js中添加以下代码:

window.onload = function() {
  var dropdowns = document.querySelectorAll('nav ul li ul');
  for (var i = 0; i < dropdowns.length; i++) {
    dropdowns[i].addEventListener('click', function(e) {
      e.stopPropagation();
    });
  }
  var toggles = document.querySelectorAll('nav ul li a');
  for (var i = 0; i < toggles.length; i++) {
    toggles[i].addEventListener('click', handleClick);
  }
}

这种方法允许您使用纯JavaScript代码来实现三级下拉菜单,这将使您的页面加载更快,并且不需要依赖第三方库。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:三级下拉菜单的js实现代码 - Python技术站

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

相关文章

  • 如何布局登录页面

    当布局一个登录页面时,需要考虑以下方面: 页面布局 输入框和其他表单元素的样式和交互 提交按钮和其他交互元素的样式和交互 页面布局 登录页面的布局一般是垂直居中的,这可以使用flexbox来实现。以下是一个示例代码块: body { display: flex; justify-content: center; align-items: center; he…

    css 2023年6月9日
    00
  • 基于jquery的表头固定的若干方法

    基于jQuery的表头固定有很多种方法,下面我来详细讲解一下。 1. 使用position和scrollTop 这种方法利用了position属性的fixed值,scrollTop获取顶部距离,使表头一直固定在顶部。 首先,我们需要在CSS中设置表头的position属性为fixed,并设置它的top为0: thead { position: fixed; …

    css 2023年6月11日
    00
  • selenium+python自动化测试之页面元素定位

    本文将详细讲解如何使用selenium和python实现自动化测试中的页面元素定位。 什么是selenium Selenium是一个基于浏览器的自动化测试工具,可以模拟人类对网站的操作,用于自动化测试。Selenium支持多种语言,包括python,因为其易学易用、功能强大,成为自动化测试的首选语言。 Selenium+Python实现页面元素定位的方法 页…

    css 2023年6月10日
    00
  • JavaScript实现修改伪类样式

    要实现修改伪类样式,我们需要了解伪类和JavaScript操作样式的方法。 伪类 伪类是CSS中常用的表达方式,用于选择元素的一些特定状态或特殊位置。如:hover用于选中鼠标悬停在元素上的状态等,伪类选择器以冒号(:)开头,常见的伪类有下列几个: :hover:鼠标悬停状态 :active:激活状态 :focus:焦点状态 :first-child:第一个…

    css 2023年6月10日
    00
  • vue中关于@media媒体查询的使用

    当我们在使用 Vue 开发 Web 应用程序时,经常需要针对不同的屏幕尺寸进行布局和样式的调整。媒体查询(Media Queries)是一种很好的解决方案,它可以根据设备的屏幕尺寸自适应调整样式表的规则。在 Vue 中使用媒体查询也非常简单。 使用方式 在 Vue 中使用媒体查询,我们可以使用 @media 规则。这个规则可用于 CSS 样式表中,也可用于 …

    css 2023年6月10日
    00
  • 前端从浏览器的渲染到性能优化

    前端从浏览器的渲染到性能优化是一个在构建Web应用程序中非常重要的过程。本攻略将介绍从网页加载到渲染完毕,以及到如何优化网页性能,以下是详细说明: 网页加载 HTTP 请求 网页加载的第一步是浏览器为网页资源(HTML、CSS和JavaScript等)发送HTTP请求。如需优化性能,我们应确保最小化HTTP请求。 HTML 解析和 DOM 树构建 浏览器将接…

    css 2023年6月9日
    00
  • CSS样式表的背景渲染效率

    CSS样式表的背景渲染效率是指浏览器渲染网页时,如何尽可能地减少对内存及其他计算机资源的使用,从而提高网页的加载速度及用户体验。以下是一些提高CSS样式表的背景渲染效率的攻略: 1. 尽可能使用CSS3的简写方式 使用CSS3的简写方式能够节省代码,减少文件大小,从而提高页面加载速度,同时也能更方便地进行代码编写和修改。例如: /* 按照传统方式编写的CSS…

    css 2023年6月9日
    00
  • 通过position定位实现div底端对齐

    想要通过position定位实现div底端对齐,需要以下步骤: 给父元素设置 position: relative; 这一步是为了使子元素能够参照自己正确的定位。 给子元素设置 position: absolute; bottom: 0; 这一步是为了让子元素的底部与父元素的底部对齐,并且 bottom 属性的值为 0 表示将子元素定位在父元素底部。 下面是…

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