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实用小函数使用介绍
Nov 11 Javascript
js函数在frame中的相互调用详解
Mar 03 Javascript
JavaScript的Number对象的toString()方法
Dec 18 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
Oct 10 Javascript
AngularJS入门教程之表单校验用法示例
Nov 02 Javascript
JavaScript实现汉字转换为拼音的库文件示例
Dec 22 Javascript
JS实现批量上传文件并显示进度功能
Jun 27 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
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极大的增强功能和性能
2006/10/09 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
Python中的index()方法使用教程
2015/05/18 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
使用Python处理BAM的方法
2018/09/28 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
如何学习Python time模块
2020/06/03 Python
python与pycharm有何区别
2020/07/01 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
感恩节活动策划方案
2014/05/16 职场文书
停车位租赁协议书
2014/09/24 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
小学安全工作总结2015
2015/05/18 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
Python面向对象编程之类的概念
2021/11/01 Python
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript