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获取select选中的option的text示例代码
Dec 19 Javascript
详谈jQuery中的this和$(this)
Nov 13 Javascript
基于JQuery打造无缝滚动新闻步骤详解
Mar 31 Javascript
使用vue.js开发时一些注意事项
Apr 27 Javascript
javascript对象的相关操作小结
May 16 Javascript
Vue.js组件tree实现省市多级联动
Dec 02 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
Feb 13 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
Webpack框架核心概念(知识点整理)
Dec 22 Javascript
vue-cli创建的项目,配置多页面的实现方法
Mar 15 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 Javascript
详解Nuxt内导航栏的两种实现方式
Apr 16 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 sybase_fetch_array使用方法
2014/04/15 PHP
linux下编译安装memcached服务
2014/08/03 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
Python 私有化操作实例分析
2019/11/21 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
经典c++面试题六
2012/01/18 面试题
商场活动策划方案
2014/01/24 职场文书
新文化运动的基本口号
2014/06/21 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2014年会计工作总结
2014/11/27 职场文书
教师年度个人总结
2015/02/11 职场文书
政工师工作总结2015
2015/05/26 职场文书
党小组推荐意见
2015/06/02 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang