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日

相关文章

  • JavaScript实现简单的轮播图效果

    下面是详细讲解“JavaScript实现简单的轮播图效果”的完整攻略。 准备工作 在编写轮播图之前,你需要准备以下工作: HTML 结构:需要一个 HTML 结构,用于展示轮播图,一般是 <ul> 元素下有若干个 <li> 元素,每个 <li> 元素中包含一个轮播图的内容,例如图片或文字。 CSS 样式:需要给 HTML …

    css 2023年6月11日
    00
  • CSS设置div背景图的实现代码

    下面是关于“CSS设置div背景图的实现代码”的详细攻略: 步骤一:选择背景图片并准备好 在设置div背景图的时候,首先需要选择一张合适的图片。一般来说,可以选择一张具有纹理或颜色的图片作为背景图,以便更好的突出div的内容。选好图片后,需要将其准备好,保证图片符合使用要求。图片准备好后,就可以开始设置div背景图了。 步骤二:使用background属性设…

    css 2023年6月9日
    00
  • 浅谈css元素居中

    当我们在网页设计中需要将一个元素居中显示时,通常需要使用CSS来实现。但是CSS中实现元素居中又有很多方法,因此本篇文章将会详细讲解几种常用的居中方法。 1. 水平居中 1.1 行内元素水平居中 如果元素是一个行内元素,比如文字或者图片等,则可以使用text-align属性将元素的内容水平居中: .container { text-align: center…

    css 2023年6月10日
    00
  • css实现网页栏目左侧固定当滚动到底部时自动调整位置

    实现网页栏目左侧固定当滚动到底部时自动调整位置的方法一般是通过CSS的position属性配合JavaScript实现的。下面我将详细说明实现的步骤。 1. HTML结构 首先,我们需要在HTML中创建网页栏目的结构,包括左侧固定栏目和右侧内容区域。通常情况下,左侧栏目会使用position:fixed属性实现固定,而右侧内容区域则会使用position:r…

    css 2023年6月10日
    00
  • 详解CSS中的几种长度px、em、pt

    关于CSS中的长度单位,常用的有px、em、pt等几种。下面我们将分别介绍这些长度单位的含义和使用方法。 像素(px) 像素是CSS中最常用的长度单位,1px表示页面上的一个像素点。这种长度单位相对于设备分辨率而言,并不是固定的。在处理高分辨率屏幕时,1个CSS像素点对应的可能是2、3、4个物理像素。 示例1:设置字体大小为16px div{ font-si…

    css 2023年6月9日
    00
  • 原生JS实现图片轮播切换效果

    下面是“原生JS实现图片轮播切换效果”的完整攻略。 什么是图片轮播切换效果? 图片轮播切换效果是指在网页上展示一组图片,并在规定的时间间隔内自动切换图片或者在用户交互的作用下手动切换图片。图片轮播切换效果是Web前端页面设计中常用的一个功能。 使用原生JS实现图片轮播切换效果,需要做哪些工作? 使用原生JS实现图片轮播切换效果需要做以下几个步骤: 创建包含多…

    css 2023年6月11日
    00
  • CSS3实现炫酷的切片式图片轮播效果

    下面是“CSS3实现炫酷的切片式图片轮播效果”的完整攻略。 一、实现思路 利用CSS3的@keyframes创建动画关键帧。 使用transform属性实现图片翻转和平移。 利用position: absolute和z-index属性实现图片层叠和切片效果。 使用animation属性激活动画关键帧。 二、代码实现 以下是一个基础版的切片式图片轮播效果。 H…

    css 2023年6月9日
    00
  • 详解常用css样式(布局)

    以下是关于“详解常用CSS样式(布局)”的完整攻略,包含两个示例说明。 常用CSS样式(布局) CSS是一种用于网页设计的样式表语言,它可以控制网页的布局、颜色、字体等方面。以下是一些常用的CSS样式(布局): 1. 盒模型 盒模型是CSS布局中的基本概念,它将每个HTML元素看作一个矩形盒子,包括内容区域、内边距、边框和外边距。可以使用CSS的box-si…

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