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 相关文章推荐
javascript[js]获取url参数的代码
Oct 17 Javascript
url地址自动加#号问题说明
Aug 21 Javascript
页面只能打开一次Cooike如何实现
Dec 04 Javascript
js获得地址栏?问号后参数的方法
Aug 08 Javascript
JavaScript+canvas实现七色板效果实例
Feb 18 Javascript
深入理解Vue nextTick 机制
Apr 28 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
Oct 09 Javascript
bootstrap-table formatter 使用vue组件的方法
May 09 Javascript
优化Vue项目编译文件大小的方法步骤
May 27 Javascript
vuex入门最详细整理
Mar 04 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
js实现电灯开关效果
Jan 19 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
如何保障Web服务器安全
2014/05/05 面试题
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
应聘教师推荐信
2013/10/31 职场文书
生物专业个人自荐信范文
2013/11/29 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
分公司负责人任命书
2014/06/04 职场文书
查摆剖析材料范文
2014/09/30 职场文书
小学班主任事迹材料
2014/12/17 职场文书
检讨书范文300字
2015/01/28 职场文书
寒假致家长的一封信
2015/10/10 职场文书
利用python做表格数据处理
2021/04/13 Python
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
python实现局部图像放大
2021/11/17 Python
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL