js实现导航栏上下动画效果

JS实现导航栏上下动画效果攻略

1. 确定导航栏样式

首先,我们需要确定导航栏的样式,通常包括容器样式、菜单样式和链接样式。可以使用CSS给导航栏添加样式。

.navbar {
  background-color: #fff;
  color: #333;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.5rem;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}

.navbar .menu {
  display: none;
}

.navbar a {
  color: #333;
  text-decoration: none;
}

2. 添加按钮和动画

我们需要添加一个按钮,当该按钮被单击时,菜单将显示或隐藏。同时,我们需要使用JS添加动画效果以实现菜单的平滑显示和隐藏。

<div class="navbar">
  <a href="#">My Website</a>
  <button class="menu-toggle">&#9776;</button>
  <ul class="menu">
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Services</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</div>
.navbar .menu {
  display: none;
  transition: all 0.4s ease-in-out;
}

.navbar .menu.show {
  display: block;
  transform: translateY(0);
}

.navbar .menu.hide {
  display: none;
  transform: translateY(-100%);
}
var menuToggle = document.querySelector('.menu-toggle');
var menu = document.querySelector('.menu');

menuToggle.addEventListener('click', function() {
  menu.classList.toggle('show');
  menu.classList.toggle('hide');
});

在上述代码中,我们首先使用querySelector获取菜单切换按钮和菜单。在单击菜单切换按钮时,我们使用classList.toggle()函数在.show和.hide类之间切换,这将添加或移除菜单的显示和隐藏类。我们使用CSS transition属性和transform属性来实现菜单平滑的显示和隐藏效果。

3. 示例

以下是两个示例,演示了JS实现导航栏上下动画效果的完整过程。

示例1:使用jQuery实现导航栏动画效果

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Example 1</title>
  <style>
    .navbar {
      background-color: #fff;
      color: #333;
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0.5rem;
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
    }

    .navbar .menu {
      display: none;
      transition: all 0.4s ease-in-out;
    }

    .navbar .menu.show {
      display: block;
      transform: translateY(0);
    }

    .navbar .menu.hide {
      display: none;
      transform: translateY(-100%);
    }

    .navbar a {
      color: #333;
      text-decoration: none;
    }
  </style>
</head>
<body>
  <div class="navbar">
    <a href="#">My Website</a>
    <button class="menu-toggle">&#9776;</button>
    <ul class="menu">
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Services</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </div>

  <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
      $('.menu-toggle').click(function() {
        $('.menu').slideToggle('slow');
      });
    });
  </script>
</body>
</html>

示例2:使用原生JS实现导航栏动画效果

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Example 2</title>
  <style>
    .navbar {
      background-color: #fff;
      color: #333;
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0.5rem;
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
    }

    .navbar .menu {
      display: none;
      transition: all 0.4s ease-in-out;
    }

    .navbar .menu.show {
      display: block;
      transform: translateY(0);
    }

    .navbar .menu.hide {
      display: none;
      transform: translateY(-100%);
    }

    .navbar a {
      color: #333;
      text-decoration: none;
    }
  </style>
</head>
<body>
  <div class="navbar">
    <a href="#">My Website</a>
    <button class="menu-toggle">&#9776;</button>
    <ul class="menu">
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Services</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </div>

  <script>
    var menuToggle = document.querySelector('.menu-toggle');
    var menu = document.querySelector('.menu');

    menuToggle.addEventListener('click', function() {
      menu.classList.toggle('show');
      menu.classList.toggle('hide');
    });
  </script>
</body>
</html>

以上就是JS实现导航栏上下动画效果的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现导航栏上下动画效果 - Python技术站

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

相关文章

  • 基于React路由跳转的几种方式

    根据你的需求,我会简要介绍一下关于基于React路由跳转的几种方式,并提供两个实例说明。 1. React Router React Router 是一个开源库,可以帮助我们创建单页应用。它可以轻松管理路由,并帮助我们构建动态 UI。React Router 的基本用法如下: import { BrowserRouter as Router, Route, …

    JavaScript 2023年6月11日
    00
  • Webkit的跨域安全问题说明

    Webkit的跨域安全问题说明 Web应用程序中经常会有跨域请求的需求,但是跨域请求可能会涉及到安全风险,因此需要特殊的处理。 在Webkit浏览器中,跨域请求的安全机制较为严格。Webkit浏览器会对来自其他域的请求进行一系列的安全检查,包括Same origin policy、CORS等措施。下面我们详细讲解一下Webkit的跨域安全问题。 Same o…

    JavaScript 2023年5月27日
    00
  • JS作为值的函数用法示例

    JS作为值的函数用法示例即为将函数定义作为一个值来使用,可以将函数定义作为一个变量赋值给变量、集合或对象中的属性,也可以将函数作为一个参数传递给其他函数。下面是两个示例说明: 示例一:将函数作为参数传递给其他函数 // 定义一个函数 function sayHi(name) { console.log(‘Hi ‘ + name + ‘!’); } // 定义…

    JavaScript 2023年5月27日
    00
  • 解决 JScript 中使用日期类型数据时出现类型错误的问题

    当在 JScript 中使用日期类型数据时,有时会遇到类型错误的问题,这是因为 JScript 中的日期类型是 COM/OLE Automation 中的 Variant 类型转换成的。Variant 类型有不同的子类型,而 Date 是其中的一种。下面介绍一些解决这个问题的方法: 方法一:使用 new Date() 使用 new Date() 可以将字符串…

    JavaScript 2023年6月10日
    00
  • uniapp实现横屏签字版

    实现横屏签字版可以利用uniapp中的canvas以及第三方的canvas插件实现。 步骤一:安装canvas插件 在uniapp中使用canvas需要下载并安装canvas插件,下载地址为:https://ext.dcloud.net.cn/plugin?id=127 下载完成后,在uniapp项目的根目录下,打开cmd或者终端并输入如下命令: npm i…

    JavaScript 2023年6月11日
    00
  • Three.js 进阶之旅:页面平滑滚动-王国之泪 ?

    声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。 摘要 浏览网页时,常被一些基于鼠标滚轮控制的页面动画所惊艳到,比如greensock 官网这些 showcase 案例页面就非常优秀,它们大多数都是使用 Tween.js、gasp 及 greensock 提供的一些动画扩展库实现的。使用 …

    JavaScript 2023年5月6日
    00
  • JavaScript正则表达式校验与递归函数实际应用实例解析

    下面是详细讲解JavaScript正则表达式校验与递归函数实际应用实例解析的完整攻略。 一、正则表达式校验 1.1 什么是正则表达式 正则表达式是一种用特定语法编写的用来匹配、搜索和替换字符串的工具。在JavaScript中,可以使用正则表达式来校验和处理字符串。 1.2 常用的正则表达式语法 下面是一些常用的正则表达式语法: ^ 匹配字符串的开始位置 $ …

    JavaScript 2023年5月28日
    00
  • 解决页面js接受Long型损失精度问题(最新解决方案)

    解决页面JS接受Long型损失精度问题(最新解决方案) 在前后端分离的架构下,我们经常需要通过网络传输Long类型的数据,在前端进行处理。但是,由于JS中Number类型采用IEEE 754双精度浮点数表示,会存在精度损失的问题。而Long类型的数据更倾向于采用Java或C++等强类型语言进行处理,因此我们需要找到一种前端解决方案。 方案一:采用BigInt…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部