JS实现灵巧的下拉导航效果代码

关于JS实现灵巧的下拉导航效果代码的攻略,我可以提供以下的步骤:

步骤一:HTML结构

首先需要创建导航菜单的HTML结构。这可以通过一个无序列表来实现,每个导航元素都是其子元素。下拉菜单需要使用CSS来定位。

<nav class="menu">
  <ul>
    <li><a href="#">HOME</a></li>
    <li>
      <a href="#">PRODUCTS</a>
      <ul>
        <li><a href="#">PRODUCT ONE</a></li>
        <li><a href="#">PRODUCT TWO</a></li>
        <li><a href="#">PRODUCT THREE</a></li>
      </ul>
    </li>
    <li><a href="#">ABOUT US</a></li>
    <li><a href="#">CONTACT US</a></li>
  </ul>
</nav>

注意,我们在PRODUCTS导航项下添加了一个下拉菜单,使用了另外的无序列表来表示菜单项。该下拉菜单的CSS样式我们稍后来定义。

步骤二:CSS样式

接下来定义导航菜单和下拉菜单的CSS样式。我们使用了flex布局,下拉菜单的定位是通过position:absolutez-index实现。详见代码:

nav.menu ul {
  display: flex;
  justify-content: space-between;
  list-style: none;
  margin: 0;
  padding: 0;
  background-color: #f2f2f2;
}

nav.menu a {
  display: block;
  padding: 20px;
  text-decoration: none;
  color: #333;
  border-bottom: 2px solid transparent;
  position: relative;
}

nav.menu a:hover {
  background-color: #ddd;
}

nav.menu ul ul {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 1;
  opacity: 0;
  visibility: hidden;
  background-color: #f2f2f2;
  padding: 0;
  margin: 0;
  list-style: none;
  transition: all 0.25s ease;
}

nav.menu ul li:hover > ul {
  opacity: 1;
  visibility: visible;
}

nav.menu ul ul li {
  display: block;
  width: 100%;
}

nav.menu ul ul a {
  display: block;
  padding: 10px 20px;
}

nav.menu ul ul a:hover {
  background-color: #ddd;
}

步骤三:JavaScript实现

最后,我们来实现下拉菜单效果。这个效果是通过JavaScript来实现的,下面的代码实现了基本的下拉菜单效果:

const ul = document.querySelectorAll('nav.menu ul li');
for (let i = 0; i < ul.length; i++) {
  ul[i].addEventListener('mouseenter', function() {
    const ulChild = this.querySelector('ul');
    if (ulChild)
      ulChild.style.display = 'block';
  });
  ul[i].addEventListener('mouseleave', function() {
    const ulChild = this.querySelector('ul');
    if (ulChild)
      ulChild.style.display = 'none';
  });
}

我们使用了querySelectorAll获取所有的ul元素并将它们保存在ul数组中,然后添加了两个事件监听:mouseentermouseleave。这些事件处理程序会检查当前元素是否有子菜单,并根据需要显示或隐藏这些菜单。

示例

这里提供两个例子,一个是有分层级的下拉菜单,一个是简单的下拉菜单。

分层级下拉菜单

代码:

<nav class="menu">
  <ul>
    <li><a href="#">Home</a></li>
    <li>
      <a href="#">Products</a>
      <ul>
        <li><a href="#">Product 1</a></li>
        <li><a href="#">Product 2</a></li>
        <li>
          <a href="#">Product 3</a>
          <ul>
            <li><a href="#">Sub-Product 1</a></li>
            <li><a href="#">Sub-Product 2</a></li>
            <li><a href="#">Sub-Product 3</a></li>
          </ul>
        </li>
        <li><a href="#">Product 4</a></li>
        <li><a href="#">Product 5</a></li>
      </ul>
    </li>
    <li><a href="#">About Us</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

CSS样式和JavaScript代码略。

简单下拉菜单

代码:

<nav class="menu">
  <ul>
    <li><a href="#">Home</a></li>
    <li>
      <a href="#">Products</a>
      <ul>
        <li><a href="#">Product 1</a></li>
        <li><a href="#">Product 2</a></li>
        <li><a href="#">Product 3</a></li>
        <li><a href="#">Product 4</a></li>
        <li><a href="#">Product 5</a></li>
      </ul>
    </li>
    <li><a href="#">About Us</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

CSS样式和JavaScript代码略。

希望这个攻略可以帮助到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现灵巧的下拉导航效果代码 - Python技术站

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

相关文章

  • CSS教程:inline-block在各浏览器的显示

    CSS教程:inline-block在各浏览器的显示 inline-block 是 CSS 中常用的一个属性,用于将元素设置成内联块级元素。在各种布局样式中,inline-block 常常用来解决一些文本和块元素混排的问题。但是,在不同的浏览器中,inline-block 显示效果存在差异。接下来我们就来详细讲解一下 inline-block 在各浏览器的显…

    css 2023年6月10日
    00
  • 再谈javascript 动态添加样式规则 W3C校检

    当我们使用JavaScript动态地添加样式时,我们有两种方法可以使用:创建一个新Style标签,并在其中添加CSS规则,或者直接在已有的Style标签中添加新规则。 创建新Style标签并添加CSS规则 我们可以通过以下步骤创建新Style标签并添加CSS规则: 创建一个新的Style标签元素。 创建一个包含新规则的CSS规则文本。 将CSS规则文本添加到…

    css 2023年6月10日
    00
  • CSS 控制动画播放与暂停的小技巧(非常实用)

    下面是对“CSS 控制动画播放与暂停的小技巧(非常实用)”的详细讲解。 标题 CSS 控制动画播放与暂停的小技巧(非常实用) 前言 在网页设计中,动画效果经常被运用到。但有时候我们需要控制动画的播放和暂停,这时就需要使用到 CSS 控制动画播放与暂停的小技巧了。 正文 利用 animation-play-state 属性控制动画播放与暂停 animation…

    css 2023年6月10日
    00
  • 使用CSS3在触屏上为按钮实现激活效果

    下面我将针对如何使用CSS3在触屏上为按钮实现激活效果进行完整攻略: 1. CSS3 在触屏上实现激活效果简介 在移动端网页设计中,为按钮添加激活效果是非常重要的,因为它可以提高用户交互的体验,帮助用户更好地操作页面。另外,这也是一个比较常见的网页设计需求,因此我们要掌握如何用 CSS3 实现触屏按钮激活效果。 2. 实现按钮的激活效果 我们可以使用 :ac…

    css 2023年6月10日
    00
  • div+css背景渐变色代码示例

    下面我将详细讲解“div+css背景渐变色代码示例”的完整攻略。 1. 什么是背景渐变色? 背景渐变色是指在网页中通过CSS来实现背景色渐变的效果,使得背景色由一种颜色平滑过渡到另一种颜色。 2. 实现背景渐变色的方法 实现背景渐变色的方法有多种,这里将介绍比较常见的两种方法。 方法一:使用linear-gradient函数 div { background…

    css 2023年6月9日
    00
  • css核心基础总结篇(推荐)

    CSS核心基础总结篇 CSS是前端开发中不可或缺的一部分,用于定义网页的样式和布局。以下是CSS的核心基础知识和学习总结: CSS基础 CSS选择器 CSS选择器用于选择需要应用样式的HTML元素,例如: p { color: red; } CSS属性 CSS属性用于定义HTML元素的样式,例如: p { color: red; } CSS样式表 CSS样式…

    css 2023年5月18日
    00
  • IE下css常见问题总结及解决

    IE下CSS常见问题总结及解决 问题一:盒模型不一致 问题描述 IE浏览器的盒模型与其他现代浏览器不同,根据W3C标准,盒模型由content、padding、border、margin组成,而IE浏览器中的盒模型包含border和padding部分的宽度,因此在写样式时需要特别注意。 解决方案 使用CSS3的box-sizing属性,设置值为”border…

    css 2023年6月10日
    00
  • 整理了12款Javascript 表格控件(DataGrid)

    让我为您详细讲解一下“整理了12款JavaScript表格控件(DataGrid)”的攻略。 1. 前言 在网页应用开发过程中,表格展示是一个非常重要的功能。然而,原生的HTML表格功能有时会受到限制,这时候需要使用JavaScript表格控件来实现更加复杂和独特的表格展示效果。本文将介绍12款优秀的JavaScript表格控件,以及它们的应用场景、使用方法…

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