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的IE和Firefox兼容性集锦
Dec 11 Javascript
用js实现随机返回数组的一个元素
Aug 13 Javascript
jQuery实现简洁的导航菜单效果
Nov 23 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
Dec 01 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
Jun 13 Javascript
javascript事件冒泡简单示例
Jun 20 Javascript
JavaScript reduce和reduceRight详解
Oct 24 Javascript
自己封装的一个原生JS拖动方法(推荐)
Nov 22 Javascript
React Router基础使用
Jan 17 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
javascript原型链学习记录之继承实现方式分析
May 01 Javascript
JavaScript流程控制(分支)
Dec 06 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读取html并截取字符串的简单代码
2009/11/30 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
微信小程序实现滚动消息通知
2018/02/02 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
python实现壁纸批量下载代码实例
2018/01/25 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
工程班组长岗位职责
2013/12/30 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
分家协议书
2014/04/21 职场文书
2015年节能减排工作总结
2015/05/14 职场文书
婚宴主持词
2015/06/30 职场文书
公开致歉信
2019/06/24 职场文书
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技