jQuery实现背景滑动菜单


Posted in Javascript onDecember 02, 2016

话不多说,直接附上源码,仅供大家参考

<div class="menu">
 <ul id="menu">
 <li><a href="#">JavaScript</a></li>
 <li value="1"><a href="#">Graphic Design</a></li>
 <li><a href="#">HTML</a></li>
 <li><a href="#">User Interface</a></li>
 <li><a href="#">CSS</a></li>
 </ul>
 <div id="slide"></div>
</div>
* {margin:0; padding:0}
body {font:14px Helvetica, sans-serif; font-weight:bold; background:#FFF}
.menu {position:relative; background:url(images/bg.gif) no-repeat; height:35px; width:459px}
.menu ul {list-style:none; z-index:10; position:absolute; z-index:100; padding:9px 5px}
.menu li {float:left}
.menu a, .menu a:active, .menu a:visited, .menu a:hover {text-decoration:none; color:#FFF; padding:10px}
#slide {position:absolute; top:6px; height:24px; background:#89957a; z-index:10;}
(function($){
 $.fn.extend({
 bgslide:function(value){
 //可选参数
 value=$.extend({
 "fw":12,
 "sw":2,
 "ftime":100,
 "stime":300
 },value);
 //初始化背景的位置
 var liw = $("ul li:eq(0)",value.menu).width();//获取第一个li的宽
 var $slide = $(this).children("div"); 
 $slide.css({"width":liw,"left":"5"});
 //悬停时执行动画
 function hani(w,l){
 $slide.stop(true) //很关键的一句话,当悬停时,让正在执行的动画,和列队中的动画,都取消;防止鼠标不停滑动时的bug;
 .animate({"width":w,"left":l+value.fw},value.ftime)
 .animate({"left":l-value.fw},value.stime)
 .animate({"left":l+value.sw},value.stime)
 .animate({"left":l-value.sw},value.stime);
 } 
 //离开时执行动画 
 function oani(){
 $slide.stop(true)
 .animate({"width":liw,"left":"5"},value.ftime)
 .animate({"left":l-value.fw},value.stime)
 .animate({"left":l+value.sw},value.stime)
 .animate({"left":l-value.sw},value.stime);; 
 }
 $("ul li",this).hover(function(){
 var w = $(this).width(); //获取当前li的宽
 var l = $(this).position().left; //获取当前li的横坐标 
 if(!$(this).index()==0){ //鼠标悬停在第一个LI时,不发生动画
 hani(w,l);
 }
 },function(){
 oani();
 });
 } 
 })
})(jQuery);

html结构思路:

div:放置一个背景图层,相对定位;

UL:放置菜单内容,绝对定位;

div:放置滑动的背景层,绝对定位;

JQuery思路分析:

鼠标悬停到每一个LI的时候,让这个滑动的背景层,通过水平移动动画,来定位到当前这个LI的地方;并有一个左右晃动效果;鼠标离开时,让背景层滑动到初始位置;

鼠标悬停时:

1.获取当前LI相对于最外层DIV的水平坐标,即横坐标值;

2.让滑动的背景层的横坐标正好等于当前LI的横坐标;

3.执行一个左右晃动的动画,即改变当前水平坐标的值;

鼠标离开时:

1.让背景层滑动到初始位置,即改变横坐标的值,为初始值;

下载Demo地址:http://xiazai.3water.com/yuanma/myslidebgmenu(3water.com).rar

以上就是本文的全部内容,希望对大家有所帮助,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
json 实例详细说明教程
Oct 31 Javascript
为你的网站增加亮点的9款jQuery插件推荐
May 03 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
Apr 07 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
Apr 11 Javascript
jQuery选择器全面总结
Jan 06 Javascript
JS中FRAME的操作问题实例分析
Oct 21 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
基于jquery实现在线选座订座之影院篇
Aug 24 Javascript
JS扩展类,克隆对象与混合类实例分析
Nov 26 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
Jan 18 Javascript
node.js实现带进度条的多文件上传
Mar 27 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 #Javascript
Angular2学习笔记——详解路由器模型(Router)
Dec 02 #Javascript
基于jQuery实现的幻灯图片切换
Dec 02 #Javascript
JavaScript中清空数组的方法总结
Dec 02 #Javascript
浅谈js中几种实用的跨域方法原理详解
Dec 02 #Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
Dec 02 #Javascript
探讨跨域请求资源的几种方式(总结)
Dec 02 #Javascript
You might like
php面向对象 字段的声明与使用
2012/06/14 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
航空学院求职信
2014/06/11 职场文书
大学生见习总结报告
2015/06/24 职场文书
应用最多的公文《通知》如何写?
2019/04/02 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
Python+DeOldify实现老照片上色功能
2022/06/21 Python