用javascript来实现动画导航效果的代码

2023-12-09前端开发
24

当我们需要实现网站导航栏的动画效果时,我们可以使用 JavaScript 来完成。下面是详细的攻略及示例说明:

步骤一:创建 HTML 结构

我们需要创建HTML页面,并添加与导航栏有关的HTML标签,例如 nav、ul、li、a 等标签。这些标签应该与我们要展示的菜单项一致。

在此示例中,我们创建了一个简单的 HTML 结构代码:

<nav>
  <ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">服务</a></li>
    <li><a href="#">关于</a></li>
  </ul>
</nav>

步骤二:写 CSS 样式

为菜单项添加样式,使其更醒目和易于使用。这样可以让用户知道它们的功能是什么,同时为菜单项提供动画效果。

在此示例中,我们使用 CSS 实现了一个基本样式:

nav ul {
  display: flex;
  justify-content: space-between;
  align-items: center;
  list-style: none;
  padding: 0;
  margin: 0;
}

nav li {
  position: relative;
}

nav a {
  display: block;
  color: black;
  text-decoration: none;
  padding: 10px;
}

nav a::before {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 3px;
  background-color: #ff0000;
  transition: 0.3s;
}

nav a:hover::before {
  width: 100%;
}

这段代码会将菜单项放置在一行中,即使它们的宽度不同。当用户将鼠标放在菜单项上时,菜单项下面的线条会以动画的方式扩展。

步骤三:添加 JavaScript 代码

我们可以使用 JavaScript 来实现导航菜单的动画效果。这种效果通常已被称为“下划线”。

在此示例中,我们可以使用以下代码来实现菜单项的动画效果:

const links = document.querySelectorAll("nav a");

links.forEach((link) => {
  link.addEventListener("mouseover", (e) => {
    let underline = e.target.querySelector("::before");

    underline.style.width = "100%";
  });

  link.addEventListener("mouseout", (e) => {
    let underline = e.target.querySelector("::before");

    underline.style.width = "0";
  });
});

这段代码的工作原理如下:当用户将鼠标悬停在菜单项上时,它会搜索菜单项上的下划线元素,并将其宽度设置为 100%。当用户将鼠标从菜单项上移开时,它将下划线的宽度设置为 0,从而使其“消失”。

示例一:下拉菜单

我们可以通过在下拉菜单中添加动画效果来改善用户体验。用户将鼠标悬停在菜单项上时,下拉菜单将以动画的方式打开,向用户展示一些额外的选项。

以下是一个可用于实现此效果的 JavaScript 代码示例:

const dropdowns = document.querySelectorAll('.dropdown');

dropdowns.forEach((dropdown) => {
  let content = dropdown.querySelector('.dropdown-content');

  dropdown.addEventListener('mouseover', (e) => {
    content.style.display = 'block';
  });

  dropdown.addEventListener('mouseout', (e) => {
    content.style.display = 'none';
  });
});

示例二:滚动导航

使用 JavaScript,我们可以创建一个当用户滚动页面时菜单项会进出场的动画效果。这可以让我们的网站更具交互感。

以下是一个可用于实现此效果的 JavaScript 代码示例:

const nav = document.querySelector('nav');
const navLinks = document.querySelectorAll('nav a');

window.addEventListener('scroll', () => {
  if (window.scrollY > 50) {
    nav.classList.add('scroll-nav');
    navLinks.forEach(link => link.classList.add('scroll-link'));
  } else {
    nav.classList.remove('scroll-nav');
    navLinks.forEach(link => link.classList.remove('scroll-link'));
  }
});

我们使用 JavaScript 中的 window 对象和 scroll 事件来创建此效果。如果页面的垂直滚动超过 50,导航菜单栏将添加额外的CSS类名,从而产生动画效果。

这些都是使用 JavaScript 实现网站导航栏动画效果的一些示例,希望对大家有所帮助。

The End

相关推荐

layui实现图片上传成功后回显点击放大图片功能
layui实现图片上传成功后回显点击放大图片功能,html代码部分: !-- html代码--div class="layui-form-item" label class="layui-form-label"上传图片/label div class="layui-input-block" button type="button" class="layui-btn" id="license-auth-letter-...
2025-09-06 前端开发
202

Layui实现数据表格中鼠标悬停图片放大离开时恢复原图
Layui实现数据表格中鼠标悬停图片放大离开时恢复原图的效果,最终效果如下图所示: 实现代码如下,在done函数中调用hoverOpenImg方法 var tableIns = window.demoTable = table .render({ elem : '#idTest', id : 'idTest', url : '/postData', //width : 150...
2025-09-04 前端开发
112

layui点击文本输入框调起弹出选择框并选择内容的两种方法参考
我们在用到layui时候,需要点击文本输入框调起弹出选择框并选择内容,这个要怎么操作呢?以下两种方法可以参考: 1、点击名称,弹出信息弹框,选择表格中的某一行,实现效果如下: html页面代码 !--计量器具弹出层-- div id="equipment" lay-filter="equipmen...
2025-09-02 前端开发
167

网站部署https后百度地图不显示问题
https的网站如果引用百度地图,会出现加载不了的问题,这是因为涉及到跨域问题,网站是https的,但是引用百度地图的是http的,这个要怎么操作呢? 比如我引用的地址:http://api.map.baidu.com/api?v=2.0ak=AK显示 后来看了一下,少了一个s=1字段,加一下s=1...
2025-07-28 前端开发
139

微信小程序实现点击复制功能和手机拨打电话功能
做小程序项目的时候,客户提了一个功能需求优化,就是长按文字需要复制全部内容,因为有的手机支持全选复制,有的手机不支持全选复制。 通过设置系统剪贴板的内容和获取系统剪贴板的内容实现复制功能 html相关代码: van-field value="{{form.contactPhone}}"...
2025-07-02 前端开发
78

js拖拽排序插件Sortable.js如何使用
由于项目功能需要,要实现对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好的满足这个需求,而且它还是开源的,于是乎就开始学习使用Sortable.js 特点 轻量级但功能强大 移动列表项时有动画 支持触屏设备和大多数浏览器(IE9及以下除外) 支持...
2025-06-12 前端开发
161