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

相关文章

  • 利用CSS3的定位页面元素

    利用 CSS3 定位页面元素基本包含以下几个主题,我逐一讲解并提供两个示例。 1. 了解 CSS3 定位的基本概念 CSS3 定位是指利用 CSS3 的技术,对页面元素进行定位,让它们呈现出预期的位置、大小和形态。CSS3 定位技术主要有以下几种: 相对定位:元素相对于其本身的位置进行定位。 绝对定位:元素相对于其最近的非静态定位祖先元素进行定位。 固定定位…

    css 2023年6月9日
    00
  • 获取内联和链接中的样式(js代码)

    获取内联和链接中的样式可以通过DOM来完成。通常情况下,内联Style和link样式表都可以被获取。 获取内联样式可以使用element.style属性,该属性可以返回包含所有内联样式属性的对象。对象的各个属性可以使用点表示法访问,其值是CSS属性的字符串表示形式。例如: <div id="myDiv" style="ba…

    css 2023年6月10日
    00
  • jQuery实现仿美橙互联两级导航菜单的方法

    下面我将详细讲解怎样用 jQuery 实现仿美橙互联两级导航菜单的方法。 1. 实现思路 仿美橙互联的两级导航菜单主要的实现思路是: 鼠标移动到一级菜单上,展开二级菜单; 鼠标离开导航菜单区域,隐藏所有二级菜单; 鼠标移动到其他一级菜单上时,隐藏当前展开的二级菜单,并展开新的二级菜单。 我们可以使用 jQuery 来实现上述功能,主要使用的方法有mouseo…

    css 2023年6月11日
    00
  • 基于纯JS实现多张图片的懒加载Lazy过程解析

    下面我来详细讲解“基于纯JS实现多张图片的懒加载Lazy过程解析”的完整攻略。 背景 在传统的网页中,所有的图片都会在页面加载的时候一次性加载出来,这样会导致网页的加载速度变慢。为了提升网页的加载速度和用户的交互体验,我们可以使用懒加载技术。 懒加载是指在页面滚动到特定区域时,才开始加载相应的资源。通过懒加载,可以减少网页的加载时间,提升网页的性能,并且能够…

    css 2023年6月10日
    00
  • CSS制作各种样式的彩虹效果

    CSS制作各种样式的彩虹效果的完整攻略如下: 1. 使用渐变实现彩虹效果 使用CSS渐变可以轻松地实现彩虹效果。以下是一个简单的例: .rainbow { background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet); } 上述代码将创建一个类名…

    css 2023年5月18日
    00
  • XML入门的常见问题(二)

    下面是针对“XML入门的常见问题(二)”的完整攻略: 1. 什么是XML Schema? XML Schema 是一种描述 XML 文件的结构和内容的语言,它主要用于检查和验证 XML 的有效性,并支持更加严格和灵活的数据校验。 XML Schema 不同于 DTD,它可以定义更多的数据类型和结构类型,更加灵活和强大,但语法复杂。 2. 如何使用XML Sc…

    css 2023年6月9日
    00
  • html,css,javascript是怎样变成页面的

    当我们访问一个网页时,浏览器会发送HTTP请求到服务器,服务器会把请求的页面、样式文件和脚本文件等响应给浏览器,浏览器接收到这些响应后,就开始解析这些文件,将它们转换为页面。 下面是这个过程的具体解释: 1. HTML HTML是超文本标记语言,浏览器会根据HTML文件来渲染页面。HTML文件包含了页面的结构和内容,由一系列标签和属性组成。 浏览器会依次解析…

    css 2023年6月9日
    00
  • 使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)

    使用 Electron 实现类似新版 QQ 的登录界面效果,需要注意以下几点: 1. 创建 Electron 项目 使用命令行创建一个新的 Electron 项目,进入项目文件夹后安装必要的依赖: # 初始化项目 npm init # 安装 electron npm install electron –save # 安装 jquery 和 bootstra…

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