css+js实现导航栏色块跟随滑动+点击后增加样式
这篇文章,我给大家分享一个导航菜单的效果。用css+JS实现,效果如图:
本例实现效果:当鼠标移动到其他菜单项时,会有个背景色块跟随鼠标横向平滑移动。当鼠标点击后,被点击的菜单名称文字字体会加粗。
现在,看看简单的菜单布局结构:
<ul><span class="li_bg"></span> <!-- 滑动的背景色 --><li><a href="###">首页</a></li><li><a href="###">热播剧集</a></li><li><a href="###">最新电影</a></li><li><a href="###">影业资讯</a></li><li><a href="###">娱乐八卦</a></li><li><a href="###">明星图库</a></li></ul>
非常清爽简洁的标准菜单结构,css也很简单:
* {margin: 0px;padding: 0px;}ul {list-style: none;}html,body {height: 100%;width: 100%;background: #ececec;}a {text-decoration: none;}ul {position: relative; background: #f9f9f9; display: flex;width: 50%;border-radius: 25px;height: auto;padding:0px;left: 50%;top: 50%;transform: translate(-50%, -50%); }ul li {position: relative;z-index: 10;flex: 1;text-align: center;}ul li a {font-size:14px;color: #666;width: auto;height:20px;padding:15px;display: block;text-align: center;transition: all .3s;}ul li a:hover{ text-shadow:0px 0px 15px #fff; transition: all .3s;}.li_bg {width: 17%;height: auto;display: inline-block;background-color: #ffcc00;box-shadow: 0 0px 15px 0 rgba(255, 204, 0, 0.58);position: absolute;left: 0;top: 0px;bottom: 0px;margin: auto;z-index: 2;border-radius: 25px; }.this a{ font-weight: 700; color: #333;}
在css中定义的 .this 就是当li被点击时,给它增加的样式类名,通过修改 .this a 就可以实现点击后想要的效果。我这里就是给字体加粗,改变了字体颜色的深度。
接下来,我们让背景色块跟着鼠标动起来:
// 需求:鼠标经过哪个导航栏目,背景色滑动过去 var liList = document.getElementsByTagName('li');var bg = document.getElementsByClassName('li_bg')[0];var header = 0;var liLeft = 0;console.log(0);// 添加事件// 遍历li for (var i = 0; i < liList.length; i++) {liList[i].onmouseover = function () {liLeft = this.offsetLeft + (this.offsetWidth - bg.offsetWidth) / 2;}}// 使用定时器setInterval(function () {header = header + (liLeft - header) / 10;bg.style.left = header + 'px';}, 10)
写到这里,背景色块跟随鼠标滑动已经实现了。接下来我们来完善点击后给li增加this属性的的代码:
$(document).ready(function (){$("li").each(function(index){$(this).click(function(){ $("li").removeClass("this");$("li").eq(index).addClass("this");});});});
这段代码也很容易理解,当那个li项被点击,移除所有li的this类名,然后,给被点击的li增加this类名。
好了,这个例子的效果就完美实现了。需要《css+js实现导航栏色块跟随滑动+点击后增加样式》源码的同学,可以点击下载了。 感谢您阅读本篇,如果对您有所帮助,请收藏+点赞,谢谢!
相关文章:

css+js实现导航栏色块跟随滑动+点击后增加样式
这篇文章,我给大家分享一个导航菜单的效果。用cssJS实现,效果如图: 本例实现效果:当鼠标移动到其他菜单项时,会有个背景色块跟随鼠标横向平滑移动。当鼠标点击后,被点击的菜单名称文字字体会加粗。 现在&…...
AudioLM音频生成模型:技术革新与应用前景
引言 AudioLM作为一种革命性的音频生成模型,结合了深度学习和自然语言处理的先进技术,能够生成高质量、逼真的音频内容。本文旨在深入探讨AudioLM的技术原理、工作机制、应用场景以及其对音频生成领域的深远影响。 AudioLM技术原理 AudioLM音频生成模…...
数据结构教材关于C/C++的研究
变量 指针 引用 变量 普通变量表示一个内存空间,直接printf是内存空间里的值 结构体 定义一个结构体类型变量为什么必须用指针? 因此无法确定结构体需要多少空间,改用指针可以解决这个问题,因为指针的大小是固定的 指针 指…...

【刷题笔记(编程题)05】另类加法、走方格的方案数、井字棋、密码强度等级
1. 另类加法 给定两个int A和B。编写一个函数返回AB的值,但不得使用或其他算数运算符。 测试样例: 1,2 返回:3 示例 1 输入 输出 思路1: 二进制0101和1101的相加 0 1 0 1 1 1 0 1 其实就是 不带进位的结果1000 和进位产生的1010相加 无进位加…...

如何检查购买的Facebook账号优劣?
Facebook 是全球最受欢迎的社交网络之一,为品牌广告提供了巨大的潜力。许多公司和营销人员使用 Facebook 来推广他们的产品和服务,经常会购买账号。当然也分出了很多账号,比如个人号,BM号,广告号,小黑号等等。 但是,有…...

2.2.1 ROS2案例以及案例分析
1.案例需求 需求1:编写话题通信实现,发布方以某个频率发布一段文本,订阅方订阅消息,并输出在终端。 需求2:编写话题通信实现,发布方以某个频率发布自定义接口消息,订阅方订阅消息,并…...
使用 Python 访问 Windows 剪贴板
目录: 使用 Pyperclip 模块使用 clipboard 模块使用 tkinter 模块使用 win32clipboard 模块 使用 Python 将文本复制到剪贴板或从剪贴板读取文本是一项有用的功能,可以提高代码的效率,使不同应用程序之间的数据传输无缝衔接。 使用 Pyperclip…...
手机空号过滤的多种应用场景
手机空号过滤的应用场景主要涵盖以下几个方面,以下是对其应用场景的清晰归纳和分点表示: 电话营销场景: 在电话营销中,使用空号过滤技术可以显著提高营销效率。通过筛选有效手机号码,避免拨打无效号码,每次…...
[Vue学习]生命周期及其各阶段举例
当我们运行vue项目,看到了屏幕上显示的界面,看到了界面上显示的数据和标签,之后将这个界面叉掉,这一过程其实经历了一整个vue的生命周期的四个阶段,即创建阶段、挂载阶段、更新阶段以及销毁阶段, 而对于每个阶段的启动…...

YOLOv5改进 | 损失函数 | EIoU、SIoU、WIoU、DIoU、FocuSIoU等多种损失函数
秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 …...

[leetcode]minimum-absolute-difference-in-bst 二叉搜索树的最小绝对差
. - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(null…...
[ALSA]从零开始,使用ALSA驱动播放一个音频
前言 最近学了不少有关音频相关的,最近搞一下ALSA驱动 安装 参考Linux应用开发【第八章】ALSA应用开发 中提到的ALSA库及工具章节,本文中有比较详细的有关ALSA驱动引用程序怎么安装的,这里不再赘述。 关于ALSA,就当成一个音频…...

自动化设备上位机设计 一
目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 namespace 自动化上位机设计 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}} }namespace 自动化上位机设计 {partial class Fo…...

tampermonkey插件下载国家标准文件
#创作灵感# 最近在一个系统招标正文中看到了一些国家标准,想要把文章下载下来,方便查阅,但是“国家标准全文公开系统”网站只提供了在线预览功能,没有提供下载功能,但是公司又需要文件,在网上找了一些办法&…...

JAVA学习笔记2
一、加号使用 二、数据类型 bit:计算机中的最小存储单位 byte(字节):计算机中基本存储单元,1byte8bit 浮点数符号位指数位尾数位 浮点数默认为double类型...

Unity 解包工具(AssetStudio/UtinyRipper)
文章目录 1.UtinyRipper2.AssetStudio 1.UtinyRipper 官方地址: https://github.com/mafaca/UtinyRipper/ 下载步骤: 2.AssetStudio 官方地址: https://github.com/Perfare/AssetStudio 下载步骤:...

log4j2 对定时异步线程打印的日志进行过滤
log4j2的过滤器有: 官网:Log4j – Log4j Filters (apache.org) 本次不使用自定义的过滤器,使用ScriptFilter对logevent对象中的线程名称进行过滤。 具体修改如下: <!--控制台--><Console name"Console" tar…...
Oracle内部bug导致的19c DG备库宕机
Oracle内部bug导致的19c DG备库宕机 报错信息收集原因与受影响版本Workaround与解决办法报错信息收集 数据库版本: SQL> select banner,banner_full,banner_legacy from v$version;BANNER ----------------------------------------------------------------------------…...

2024 世界人工智能大会暨人工智能全球治理高级别会议全体会议在上海举办,推动智能向善造福全人类
2024 年 7 月 4 日,2024 世界人工智能大会暨人工智能全球治理高级别会议-全体会议在上海世博中心举办。联合国以及各国政府代表、专业国际组织代表,全球知名专家、企业家、投资家 1000 余人参加了本次会议,围绕“以共商促共享,以善…...

【算法专题--栈】用栈实现队列 -- 高频面试题(图文详解,小白一看就懂!!)
目录 一、前言 二、题目描述 三、解题方法 ⭐双栈 模拟 队列 🥝栈 和 队列 的特性 🍍具体思路 🍍案例图解 四、总结与提炼 五、共勉 一、前言 用栈实现队列 这道题,可以说是--栈专题--,最经典的一道题&…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...