用原生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日

相关文章

  • DIV+CSS 三栏布局实例代码

    接下来我将为您介绍详细的“DIV+CSS 三栏布局实例代码”攻略: 一、前置知识 在学习“DIV+CSS 三栏布局实例代码”之前,我们需要掌握以下前置知识: HTML和CSS基础语法:学会如何创建HTML文档,以及如何在CSS中定义样式。 盒子模型:了解块级元素和内联元素的概念,掌握padding、border和margin等属性的使用方法。 浮动和清除浮动…

    css 2023年6月10日
    00
  • Bootstrap导航条的使用和理解3

    Bootstrap是一种流行的前端框架,可用于开发响应式网页。其中,导航条是Bootstrap的常用组件之一。本文将详细讲解Bootstrap导航条的使用和理解,帮助开发者更好地掌握Bootstrap的技术。 导航条的基本布局 Bootstrap的导航条由多个HTML元素组成,包括一个包含导航标签的<nav>元素、一个<ul>元素,以…

    css 2023年6月10日
    00
  • CSS 实现平行四边形的示例代码

    CSS 实现平行四边形的方式通常有两种,分别是倾斜变形和使用伪元素实现。以下是两种方法的示例说明和完整攻略: 方法一:倾斜变形 实现一个平行四边形最常见的方式是对元素进行倾斜变形,通过旋转和缩放等方式使得正方形变成平行四边形。 示例代码如下: .parallelogram { width: 100px; height: 100px; background-c…

    css 2023年6月10日
    00
  • 简单掌握CSS3将文字描边及填充文字颜色的方法

    下面是关于“简单掌握CSS3将文字描边及填充文字颜色的方法”的攻略: CSS3文字描边及填充方法 在CSS3中,我们可以通过使用text-stroke和-webkit-text-stroke属性轻松地为文字添加轮廓线和外部描边。 1. 描边 要添加轮廓线或描边,我们可以使用以下CSS样式: /* 加粗文本 */ bold { stroke: black; s…

    css 2023年6月9日
    00
  • Table布局的优缺点介绍及为什么不建议使用

    Table布局的优缺点介绍及为什么不建议使用 Table布局的优点 Table布局主要优点是易于理解和使用。HTML表格已经成为Web开发和构建布局的常用工具之一,因为它们简单明了、易于添加和删除、易于排版等等,所以无论你是否有经验都能使用。 另外,表格也是一种强大的横向和纵向布局工具,可以将不同的元素和内容组合在一起,使布局更加灵活方便。 Table布局的…

    css 2023年6月10日
    00
  • layui的布局和表格的渲染以及动态生成表格的方法

    我来详细讲解一下“layui的布局和表格的渲染以及动态生成表格的方法”的完整攻略。 layui的布局 在layui中,布局一般使用面板(panel)和卡片(card)来完成。面板中包含了头(header)、体(body)和脚(footer)三个部分。卡片则是一种比面板更加轻量的容器。 下面是一个示例代码,演示了如何使用layui布局: <div cla…

    css 2023年6月10日
    00
  • 使用Java和WebSocket实现网页聊天室实例代码

    下面我为你详细讲解如何使用Java和WebSocket实现网页聊天室的攻略。整个过程分为以下步骤: 步骤一:准备工作 在开始操作之前,我们需要确定需求和相关技术组件。首先,需要了解WebSockets和Java有关的技术组件,包括: JavaSE 8及以上 Maven或Gradle构建工具 WebSocket API和相关实现(Tomcat或Glassfis…

    css 2023年6月10日
    00
  • Vue实现电商网站商品放大镜效果示例

    下面来详细讲解“Vue实现电商网站商品放大镜效果示例”的完整攻略,包括示例说明。 步骤一:搭建项目环境 首先需要安装Vue的开发环境,可以通过如下代码进行安装: npm install -g @vue/cli 安装好后,新建一个基于Vue的项目: vue create my-project 进入项目,安装依赖: cd my-project npm insta…

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