当前位置: 首页 > news >正文

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实现导航栏色块跟随滑动+点击后增加样式》源码的同学,可以点击下载了。 感谢您阅读本篇,如果对您有所帮助,请收藏+点赞,谢谢!

http://www.lryc.cn/news/391246.html

相关文章:

  • AudioLM音频生成模型:技术革新与应用前景
  • 数据结构教材关于C/C++的研究
  • 【刷题笔记(编程题)05】另类加法、走方格的方案数、井字棋、密码强度等级
  • 如何检查购买的Facebook账号优劣?
  • 2.2.1 ROS2案例以及案例分析
  • 使用 Python 访问 Windows 剪贴板
  • 手机空号过滤的多种应用场景
  • [Vue学习]生命周期及其各阶段举例
  • YOLOv5改进 | 损失函数 | EIoU、SIoU、WIoU、DIoU、FocuSIoU等多种损失函数
  • [leetcode]minimum-absolute-difference-in-bst 二叉搜索树的最小绝对差
  • [ALSA]从零开始,使用ALSA驱动播放一个音频
  • 自动化设备上位机设计 一
  • tampermonkey插件下载国家标准文件
  • JAVA学习笔记2
  • Unity 解包工具(AssetStudio/UtinyRipper)
  • log4j2 对定时异步线程打印的日志进行过滤
  • Oracle内部bug导致的19c DG备库宕机
  • 2024 世界人工智能大会暨人工智能全球治理高级别会议全体会议在上海举办,推动智能向善造福全人类
  • 【算法专题--栈】用栈实现队列 -- 高频面试题(图文详解,小白一看就懂!!)
  • 2024亚太杯中文赛B题全保姆教程
  • 穿越光影,共赏中华瑰宝——皮影戏文化交流盛会
  • SQL常用经典语句大全
  • 黑马点评DAY5|商户查询缓存
  • Owl 中的 Props 概述
  • 【大数据综合试验区1008】揭秘企业数字化转型:大数据试验区政策数据集大公开!
  • 在 WebGPU 与 Vulkan 之间做出正确的选择(Making the Right Choice between WebGPU vs Vulkan)
  • 亚马逊云服务器的价格真的那么贵吗?一年要花多少钱?
  • Python学习篇:Python基础知识(三)
  • C++字体库开发之字体回退三
  • python vtk lod 设置