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 相关文章推荐
js constructor的实际作用分析
Nov 15 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
js使用心得分享
Jan 13 Javascript
CSS图片响应式 垂直水平居中
Aug 14 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
js实现数组冒泡排序、快速排序原理
Mar 08 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
Apr 15 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
vuejs实现标签选项卡动态更改css样式的方法
May 31 Javascript
JS左右无缝轮播功能完整实例
May 16 Javascript
vue项目中监听手机物理返回键的实现
Jan 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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
Python中threading模块join函数用法实例分析
2015/06/04 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
python实现录音小程序
2020/10/26 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
购房意向书
2014/08/30 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
2014年小学安全工作总结
2014/12/04 职场文书