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日

相关文章

  • wap手机图片滑动切换特效无css3元素js脚本编写

    介绍一下制作wap手机图片滑动切换特效无css3元素js脚本的完整攻略: 一、需求分析 在制作wap手机图片滑动切换特效无css3元素js脚本之前,我们需要先明确需求,包括以下问题: 图片切换效果具体是什么样子? 希望达到的效果是否需要支持PC和手机端? 是否兼容各种浏览器? 明确了需求后,我们可以开始着手制作。 二、HTML结构搭建 我们需要在HTML文档…

    css 2023年6月10日
    00
  • html5/css3响应式页面开发总结

    HTML5/CSS3响应式页面开发总结 简介 HTML5/CSS3是现代Web开发中最流行的技术标准之一,而响应式页面开发则是Web设计中重要的要求之一。本文将为读者总结HTML5/CSS3下的响应式页面开发攻略。 响应式页面开发原则 响应式设计具有以下原则: 弹性网格布局 图片、媒体等流体尺寸 CSS3 Media Queries 弹性网格布局是指网页布局…

    css 2023年6月9日
    00
  • ie6,ie7,firefox的textarea滚动条、边框

    针对IE6、IE7和Firefox浏览器中TextArea滚动条和边框样式的问题,我们可以通过CSS来进行样式的设置和处理。 IE6、IE7浏览器中TextArea滚动条和边框样式的设置方法 在IE6、IE7浏览器中,TextArea默认的滚动条和边框样式是比较简单的,一般不太符合我们的需求。我们可以使用CSS来设置相关的样式。 设置滚动条样式 针对IE6、…

    css 2023年6月10日
    00
  • 仅针对IE8有效的CSS Hack猎奇写法

    下面我来详细讲解“仅针对IE8有效的CSS Hack猎奇写法”的完整攻略。 什么是CSS Hack? CSS Hack指的是根据浏览器的兼容性特征来针对不同的浏览器,达到特定的兼容效果。CSS Hack通常会使用一些浏览器本身不支持或支持不规范的CSS属性、伪类、属性、或者选择器等。 什么是IE8的Hack猎奇写法? IE8的Hack猎奇写法是一种针对只在I…

    css 2023年6月9日
    00
  • 详解CSS中的flex布局

    详解CSS中的flex布局 概述 flex布局是一种强大的CSS布局方式,它可以在不使用传统的float或position布局情况下,实现弹性和自适应的布局效果。使用flex布局,可以使得网页页面更加灵活、简洁,并且可以快速对不同尺寸的设备做出响应。 属性介绍 使用flex布局,需要在容器上应用display: flex或display: inline-fl…

    css 2023年6月10日
    00
  • CSS :befor :after 伪元素的巧妙用法

    当我们想要为文本或元素添加一些额外的效果时,可以使用CSS中的伪元素(pseudo-element)::before 和 :after。这两个伪元素可以用来插入一些内容和样式到文档中,这些内容和样式并不存在于文档中,但是可以被CSS选择器选择。 CSS :before 伪元素 :before 伪元素用于在元素前面插入一些内容。例如,我们可以使用 :befor…

    css 2023年6月10日
    00
  • 关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦

    关于IE、Firefox、Opera页面呈现异同写脚本很痛苦,主要原因是不同浏览器的页面呈现方式存在差异,导致相同的HTML、CSS代码在不同浏览器下呈现效果不同,导致需要编写兼容性代码。以下是详细攻略: 1. 熟悉各浏览器的特点 了解每个浏览器的特性,可以使我们更好地编写兼容性代码。 Internet Explorer Internet Explorer(…

    css 2023年6月10日
    00
  • 在IOS系统上滚动条滚动到指定的位置出现空白页面的解决方案

    针对这个问题,我们可以从以下几个方面来探讨。 问题分析 首先,我们需要明确的是,这个问题通常出现在iOS系统中,当网页内容太长,用户需要滚动到底部时,会出现空白的页面,而不是停留在底部,这通常与iOS系统的默认滚动条渲染方式有关。 解决方案 方案一:使用CSS样式 这是比较简单的一种解决方式,我们可以使用CSS样式的方式来解决。具体做法如下: /* 如果页面…

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