JS+CSS实现精美的二级导航效果代码

下面就是讲解“JS+CSS实现精美的二级导航效果代码”的完整攻略,希望能对你有所帮助。

简介

在前端开发中,常见的网站二级导航效果是用户先点击顶部的一级导航,在鼠标悬停/点击时,顶部导航会下拉出一个垂直的下拉菜单,展示二级导航的内容,并在用户离开导航时收起下拉菜单。这种效果通常需要通过JS和CSS结合实现。

实现步骤

  1. 首先创建一个HTML页面,用ul和li标签实现顶部导航和下拉菜单的结构。
  2. 为顶部导航和下拉菜单添加样式,其中下拉菜单需要设置为隐藏,等待触发事件时才会显示出来。
  3. 为顶部导航添加事件监听器,当用户进行鼠标悬停/点击事件时,显示和隐藏下拉菜单。
  4. 为下拉菜单添加动态效果,例如鼠标悬停时颜色变化等。

示例1:只使用CSS实现下拉菜单

HTML代码

<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a>
      <ul>
        <li><a href="#">Our Team</a></li>
        <li><a href="#">Our History</a></li>
        <li><a href="#">Our Mission</a></li>
      </ul>
    </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>
      </ul>
    </li>
    <li><a href="#">Services</a>
      <ul>
        <li><a href="#">Service 1</a></li>
        <li><a href="#">Service 2</a></li>
        <li><a href="#">Service 3</a></li>
      </ul>
    </li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

CSS代码

nav ul {
  margin: 0;
  padding: 0;
}

nav ul li {
  display: inline-block;
  position: relative;
}

nav ul ul {
  display: none;
}

nav ul li:hover > ul {
  display: inherit;
}

nav ul ul ul {
  margin-left: 100%;
  top: 0;
}

nav ul ul li {
  position: relative;
}

nav ul ul li a {
  background-color: #fff;
  color: #000;
  width: 200px;
  padding: 5px 0;
  text-align: center;
  border-bottom: 1px solid #ddd;
}

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

示例2:使用JS实现下拉菜单的切换

HTML代码

<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a>
      <ul>
        <li><a href="#">Our Team</a></li>
        <li><a href="#">Our History</a></li>
        <li><a href="#">Our Mission</a></li>
      </ul>
    </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>
      </ul>
    </li>
    <li><a href="#">Services</a>
      <ul>
        <li><a href="#">Service 1</a></li>
        <li><a href="#">Service 2</a></li>
        <li><a href="#">Service 3</a></li>
      </ul>
    </li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

CSS代码

nav ul {
  margin: 0;
  padding: 0;
}

nav ul li {
  display: inline-block;
  position: relative;
}

nav ul ul {
  display: none;
}

nav ul li:hover > ul {
  display: inherit;
}

nav ul ul ul {
  margin-left: 100%;
  top: 0;
}

nav ul ul li {
  position: relative;
}

nav ul ul li a {
  background-color: #fff;
  color: #000;
  width: 200px;
  padding: 5px 0;
  text-align: center;
  border-bottom: 1px solid #ddd;
}

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

JS代码

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

//遍历菜单项并为其绑定事件
for (var i = 0; i < dropDownMenu.length; i++) {
  //为鼠标悬停事件绑定事件监听器
  dropDownMenu[i].addEventListener('mouseover', function() {
    this.querySelector('ul').style.display = 'block';
  });
  //为鼠标移出事件绑定事件监听器
  dropDownMenu[i].addEventListener('mouseout', function() {
    this.querySelector('ul').style.display = 'none';
  });
}

总结

通过上述攻略,我们可以了解到通过JS和CSS的结合,可以实现精美的二级导航效果。CSS可以帮助我们实现下拉菜单的样式,JS则可以帮助我们实现下拉菜单的切换功能。我们可以在以上示例的基础上,自己尝试进行更加细致的功能优化和样式调整,使网站导航看起来更加舒适美观。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS实现精美的二级导航效果代码 - Python技术站

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

相关文章

  • JS实现简单控制视频播放倍速的实例代码

    下面是详细的攻略来实现JS控制视频播放倍速的代码,并且包含两个示例说明: 1. 准备工作 在实现JS控制视频播放倍速前,我们需要先准备好以下相关工作: 在页面中引入需要播放的视频文件,如:<video src=”video.mp4″></video>; 在页面中引入控制视频播放的JS代码。 2. JS代码实现 实现JS控制视频播放倍速…

    css 2023年6月10日
    00
  • 基于slideout.js实现移动端侧边栏滑动特效

    以下是基于slideout.js实现移动端侧边栏滑动特效的完整攻略。 第一步:引入slideout.js文件 在html文件中引入slideout.js文件,可以从slideout.js的官网或GitHub上获取到文件,并保存在项目中。例如: <script src="js/slideout.min.js"></scri…

    css 2023年6月10日
    00
  • BootStrap整体框架之基础布局组件

    ======== BootStrap整体框架之基础布局组件 什么是BootStrap整体框架? Bootstrap是Twitter推出的前端框架,由Twitter的工程师Mark Otto和Jacob Thornton共同开发。Bootstrap提供了用于开发Web应用程序的HTML,CSS和JavaScript组件。使用Bootstrap可以帮助我们在We…

    css 2023年6月10日
    00
  • CSS滤镜同时过滤文字的问题的解决方法

    没问题! CSS滤镜同时过滤文字的问题 在实际项目中,我们可能会用到 CSS 滤镜来美化图片。但有时候,滤镜会同时作用于文本,导致文字变得不清晰或者不易阅读。下面就让我们来探讨一下如何解决这个问题。 问题原因 首先,我们需要了解一下为什么 CSS 滤镜会影响文本。CSS 滤镜是基于层的,也就是说滤镜会作用于元素的整个对象,而不仅仅是背景或者边框等。所以,如果…

    css 2023年6月11日
    00
  • 移动端自适应样式之@media的使用方法

    关于“移动端自适应样式之@media的使用方法”,我们可以从以下几个方面进行讲解。 什么是@media? CSS3中提供了一个名为@media的规则,用来定义不同的CSS样式规则集,以适应不同的媒体类型和不同设备的屏幕尺寸。在移动端的CSS布局中,常常使用@media来进行响应式布局。 基本语法 @media规则通常包含媒体类型和媒体特性两个部分,其基本语法…

    css 2023年6月10日
    00
  • 影响jQuery使用的14个方面

    影响jQuery使用的14个方面 1. jQuery版本 使用不同版本的jQuery可能会有差异,在使用中需要注意版本兼容性,保证所使用的插件与版本适配。 2. 引入方式 正确的引入jQuery是保证jQuery可用的基础,需要遵循CDN、本地文件同时存在的规则,保证引用的jQuery文件能被正确加载。 3. 加载顺序 jQuery与其它库、框架的引入顺序会…

    css 2023年6月9日
    00
  • CSS3实现渐变背景兼容问题

    请先使用以下格式的标题划分答案的主要内容: 问题背景 兼容方案 统一兼容方案 使用autoprefixer工具实现 示例说明 示例一:纵向渐变兼容 示例二:角向渐变兼容 问题背景 CSS3引入了渐变这一新的属性,能够使得网页背景更为美观,同时也方便网页设计。然而,各浏览器对这一新属性的支持程度不同,因此会引起兼容问题,尤其是在老旧的浏览器中无法正常呈现渐变效…

    css 2023年6月9日
    00
  • 浅谈css之属性及剩余的选择符

    浅谈CSS之属性及剩余的选择符,一篇完整攻略如下: 1. 属性 CSS的属性定义了网页的样式和布局,它是CSS的重要组成部分。在CSS中,常用的属性有以下几种: 1.1 字体属性 对于网页中的文字,常用的属性有字体大小、字体颜色、字体样式等。比如: /* 设置字体大小为16像素,颜色为蓝色,字体样式为斜体 */ { font-size: 16px; colo…

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