用原生JS实现爱奇艺首页导航栏代码实例

下面是以原生JavaScript实现爱奇艺导航栏的完整攻略:

1. 准备工作

在HTML文件中,需要首先准备一个导航栏的容器元素,例如使用<ul>标签作为容器,并在容器中添加导航项<li>标签。如下所示:

<ul id="nav-bar">
  <li><a href="#">首页</a></li>
  <li><a href="#">电视剧</a></li>
  <li><a href="#">电影</a></li>
  <li><a href="#">综艺</a></li>
  <li><a href="#">VIP会员</a></li>
</ul>

2. 实现导航栏样式

为了让导航栏更美观,需要添加一些样式。我们可以使用CSS样式表来实现,如下所示:

#nav-bar {
  list-style: none;
  display: flex;
  justify-content: space-around;
  background-color: #FFF;
  height: 50px;
  line-height: 50px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

#nav-bar li {
  flex: 1;
  text-align: center;
}

#nav-bar a {
  color: #666;
  text-decoration: none;
  font-size: 14px;
  font-weight: bold;
}

3. 实现导航栏交互效果

为了让用户能够交互式使用导航栏,需要添加事件监听函数以及一些交互式效果。

3.1 点击切换样式

我们可以使用addEventListener()方法添加点击事件监听函数,在事件处理程序中添加对应的样式类名来切换样式。下面的代码实现了点击导航项后,为该项添加.active样式类,并移除其他导航项的该类。

const navBar = document.getElementById("nav-bar");
const navItems = navBar.querySelectorAll("li");

function changeStyle(event) {
  for (let i = 0; i < navItems.length; i++) {
    navItems[i].classList.remove("active");
  }
  event.target.parentNode.classList.add("active");
}

for (let i = 0; i < navItems.length; i++) {
  navItems[i].addEventListener("click", changeStyle);
}

3.2 悬浮显示菜单

我们还可以为导航项添加鼠标悬停事件监听函数,在事件处理程序中添加其他元素来实现悬浮显示菜单。下面的代码实现了鼠标悬停在导航项上时,为该项添加.show样式类,并将该项的下一个兄弟元素(即菜单)显示出来。

for (let i = 0; i < navItems.length; i++) {
  navItems[i].addEventListener("mouseover", showMenu);
  navItems[i].addEventListener("mouseout", hideMenu);
}

function showMenu(event) {
  const menuItem = event.target.nextElementSibling;
  event.target.classList.add("show");
  menuItem.style.display = "block";
}

function hideMenu(event) {
  const menuItem = event.target.nextElementSibling;
  event.target.classList.remove("show");
  menuItem.style.display = "none";
}

示例说明:

示例1

如果想要添加一个子菜单,只需要在HTML中的对应导航项<li>中添加一个包含菜单内容的容器元素。例如,添加一个电影子菜单,在HTML文件中添加如下内容:

<ul id="nav-bar">
  <li><a href="#">首页</a></li>
  <li><a href="#">电视剧</a></li>
  <li><a href="#">电影</a> <!-- 添加容器元素 -->
    <div class="sub-menu">
      <a href="#">热门电影</a>
      <a href="#">电影排行榜</a>
      <a href="#">最新上映</a>
      <a href="#">好莱坞大片</a>
    </div>
  </li>
  <li><a href="#">综艺</a></li>
  <li><a href="#">VIP会员</a></li>
</ul>

然后,将CSS样式表中的.sub-menu类名添加到样式表中,并将菜单的样式设置为绝对定位,如下所示:

#nav-bar .sub-menu {
  display: none;
  position: absolute;
  top: 50px;
  left: 0;
  width: 100%;
  background-color: #FFF;
  padding: 10px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
}

#nav-bar .sub-menu a {
  display: block;
  color: #666;
  text-decoration: none;
  font-size: 14px;
}

最后,重新运行JavaScript文件即可。此时,鼠标悬浮在电影导航项上时,会显示出电影子菜单。

示例2

如果想要为导航项添加动态数据,可以使用JavaScript来获取动态数据并添加到导航栏中。例如,在HTML文件中添加如下导航项:

<ul id="nav-bar">
  <li><a href="#">首页</a></li>
  <li><a href="#">电视剧</a></li>
  <li><a href="#">电影</a></li>
  <li><a href="#">综艺</a></li>
  <li><a href="#">VIP会员</a></li>
  <li><a href="#">更多</a></li><!-- 添加更多项 -->
</ul>

然后,在JavaScript文件中添加如下代码来获取动态数据和添加更多项导航项:

const navBar = document.getElementById("nav-bar");
const navItems = navBar.querySelectorAll("li");

// 获取动态数据
fetch("http://example.com/api/nav-items.json")
  .then(response => response.json())
  .then(data => {
    for (let item of data) {
      const navItem = document.createElement("li");
      const navLink = document.createElement("a");
      navLink.href = item.href;
      navLink.textContent = item.name;
      navItem.appendChild(navLink);
      navBar.insertBefore(navItem, navBar.lastChild);
    }
 });

上述代码从http://example.com/api/nav-items.json获取动态数据,并将每一个数据项创建成一个新的导航项,插入到更多项之前。最后,重新运行JavaScript文件即可看到添加的新导航项。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用原生JS实现爱奇艺首页导航栏代码实例 - Python技术站

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

相关文章

  • js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)

    本文将为大家介绍如何使用JavaScript和CSS实现圆角边框TAB选项卡滑动门效果,本文将会分享两款实现方案,让大家得以更好的理解和掌握这个知识点。 一、实现方案1 1.1 HTML结构 首先,我们需要如下HTML结构: <div class="tab"> <ul class="tab-list"…

    css 2023年6月10日
    00
  • CSS实现阴影文字效果

    下面是关于“CSS实现阴影文字效果”的完整攻略: 步骤1:创建HTML文本 首先,我们需要在HTML中创建我们的文字。在本次示例中,我们将使用以下代码: <h1>Shadow Text</h1> 步骤2:创建CSS样式表 在CSS样式表中,我们将使用以下属性描述阴影文字效果: text-shadow:用于定义文本的阴影。 下面是完整的…

    css 2023年6月9日
    00
  • CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

    下面是关于“CSS元素定位之通过元素的标签或者元素的id、class属性定位详解”的完整攻略。 概述 在使用 CSS 样式表对网页进行布局和样式设计时,我们需要通过元素的标签、元素的 id 属性或 class 属性来定位元素,从而对它们进行样式设计。而元素的定位方式主要包括以下三种: 标签选择器(tag selector) ID 选择器(id selecto…

    css 2023年6月9日
    00
  • CSS浏览器兼容性常见问题总结大全(推荐)

    CSS 浏览器兼容性是前端开发中一个非常重要的问题,下面是一些常见的 CSS 浏览器兼容性问题及解决方法的总结。 1. 盒模型 盒模型是 CSS 中的一个重要概念,它指的是一个元素的大小由其内容、内边距、边框和外边距组成。在标准盒模型中,元素的宽度和高度不包括内边距和边框,而在 IE 盒模型中,元素的宽度和高度包括内边距和边框。 解决方法 可以通过设置 bo…

    css 2023年5月18日
    00
  • jquery实现简单的banner轮播效果【实例】

    下面是详细讲解jquery实现简单的banner轮播效果的攻略。 1. 编写基础html文件 首先,在html文件中引入必要的css和js文件,编写基础的html文件结构如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="…

    css 2023年6月11日
    00
  • CSS中的层分离编程详解

    CSS中的层分离编程详解 在前端开发中,层分离编程是一种非常重要的编程思想,它可以使我们的代码更加清晰、易于维护。在CSS中,层分离编程可以帮助我们将结构和样式分离开来,这样不仅可以提高代码的可读性,还可以减少出错的可能性。 层分离编程的概念 层分离编程是将网页中的HTML、CSS和JavaScript分解成层,每层都有自己的职责和目的。比如,HTML层就是…

    css 2023年6月9日
    00
  • CSS中使用text-transform实现首字母大写

    在CSS中,可以使用text-transform属性来控制文本的大小写。其中,text-transform属性有以下几个可选值: none:不改变文本大小写。 capitalize:将每个单词的首字母转换为大写。 uppercase:将所有字母转换为大写。 lowercase:将所有字母转换为小写。 full-width:将所有字母转换为全角字符。 本攻略将…

    css 2023年5月18日
    00
  • 21个神奇的CSS技巧

    下面是关于“21个神奇的CSS技巧”的完整攻略。 1. 使用伪元素,构建三角形 使用伪元素:before和:after,可以在元素中嵌入三角形形状,来实现一些独特的设计,示例代码如下: .arrow-up { position: relative; } .arrow-up:before { content: ""; position: a…

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