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实现页面转发功能示例代码
Aug 05 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 Javascript
JavaScript控制按钮可用或不可用的方法
Apr 03 Javascript
JavaScript实现的MD5算法完整实例
Feb 02 Javascript
JavaScript 数组- Array的方法总结(推荐)
Jul 21 Javascript
js中遍历对象的属性和值的方法
Jul 27 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
Nov 07 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
Mar 26 Javascript
js实现九宫格布局效果
May 28 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
Aug 12 Javascript
Vue3.0的优化总结
Oct 16 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 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自动反斜杠的函数代码
2010/01/05 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
5个很好的Python面试题问题答案及分析
2018/01/19 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
Python 3.8 新功能全解
2019/07/25 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
人民调解员培训方案
2014/06/05 职场文书
单位工作证明范文
2014/09/14 职场文书
2014年司机工作总结
2014/11/21 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript