使用Javascript开发sliding-nav带滑动条效果的导航插件

2023-12-08前端开发
7

一、前言

本文将介绍如何使用Javascript开发sliding-nav带滑动条效果的导航插件。这个插件是可以在不同的网页上使用的,它可以使你的导航更美观、更实用。

二、制作滑动导航

  1. 创建HTML结构

首先,我们需要创建一个HTML结构,用于存储导航。该结构应该包含一个父元素(一般是nav标签),该元素内部包含链接、图标或其它的内容。

例如:

<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About Us</a></li>
    <li><a href="#">Our Services</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>
  1. 加入CSS样式

下一步,我们需要给导航添加样式,以便页面上的导航显示完整的导航栏,并且带有可滑动的条形滑块。

nav {
  width: 100%;
  height: 60px;
  background-color: #222;
  position: fixed;
  top: 0;
}

nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  align-items: center;
  height: 100%;
}

nav li {
  margin: 0 20px;
}

nav a {
  text-decoration: none;
  color: #fff;
  text-transform: uppercase;
  font-size: 18px;
}

.slider {
  position: absolute;
  top: 0;
  left: 0;
  width: 100px;
  height: 4px;
  background-color: #fff;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
  border-radius: 5px;
  transition: transform 0.3s;
}
  1. 添加Javascript代码

现在,我们需要添加一些Javascript代码,以便在页面加载时为导航栏添加一个滑动条。以下代码负责计算出每个导航链接的宽度,并根据链接宽度将滑块移动到当前链接的位置。

// 获取导航链接的总宽度和滑块元素
const navLinks = document.querySelectorAll('nav ul li');
const slider = document.querySelector('.slider');

let activeLink = navLinks[0];

// 设置滑块初始位置
slider.style.width = `${activeLink.offsetWidth}px`;
slider.style.transform = `translateX(${activeLink.offsetLeft}px)`;

// 移动滑块到激活链接位置
function moveSlider(link) {
  slider.style.width = `${link.offsetWidth}px`;
  slider.style.transform = `translateX(${link.offsetLeft}px)`;
  activeLink = link;
}

navLinks.forEach(link => {
  link.addEventListener('mouseover', () => {
    moveSlider(link);
  });
});

  1. 示例说明:

创建以下HTML代码:

<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About Us</a></li>
    <li><a href="#">Our Services</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
  <div class="slider"></div>
</nav>

将示例中的CSS和Javascript代码添加到HTML文件中。此时,你会看到导航栏上方添加了一条白色的滑动条,可以使用鼠标指针在不同的链接之间切换。

三、总结

通过本文介绍的方式,你可以使用Javascript轻松地制作sliding-nav带滑动条效果的导航插件。这个插件可以帮助你提高导航的可用性和美观性,使用户更加方便地访问网站上的不同页面。

除上述示例外,这种滑动导航还可以使用多种方式实现,如使用jQuery或React等库或框架来编写更复杂的代码。

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