jquery 插件之仿“卓越亚马逊”首页弹出菜单效果


Posted in Javascript onDecember 25, 2008
/*弹出式菜单*/ 
//没剑 2008-07-03 
//http://regedit.cnblogs.com 
/*参数说明*/ 
//showobj:要显示的菜单ID 
//timeout:延时时间,鼠标停留/离开后延时多久开始显示/隐藏菜单 
//speed:菜单显示速度,数字越大,显示越慢,默认为100 
//调用示例:$("#button").DMenu("#content"); 
jQuery.fn.DMenu=function(showobj,timeout,speed){ 
timeout=timeout?timeout:300; 
speed=speed?speed:100; 
//按钮对象 
var button=$(this); 
//延时计数器 
var timer=null; 
//隐藏的浮动层 
var hideDiv=$("<div></div>"); 
//容器对象 
var Container=$("<div id=\"Container\"></div>"); 
Container.hide(); 
hideDiv.append(Container); 
//菜单对象 
var jqShowObj=$(showobj); 
//隐藏菜单 
jqShowObj.hide(); 
//菜单显示的状态 
var display=false; 
//按钮的offset 
var offset=button.offset(); 
//菜单区高 
var height=jqShowObj.height(); 
//菜单区宽 
var width=jqShowObj.width(); 
//按钮的高 
var btnHeight=button.height(); 
//按钮的宽 
var btnWidth=button.width(); 
//定位层放到最前面 
$(document.body).prepend(hideDiv); 
//放到容器中 
//Container.append(jqShowObj); //****显示菜单方法开始****// 
var showMenu=function(){ 
//如果菜单为显示则退出操作 
if (display) 
{ 
return false; 
} 
//设置容器属性 
Container.css({ 
margin:"0 auto", 
width:btnWidth+"px", 
height:btnHeight+"px" 
}); 
//定位隐藏层 
hideDiv.css({ 
position:"absolute", 
top:offset.top+"px", 
left:offset.left+(btnWidth/2)-(width/2)+"px", 
height:height+"px", 
width:width+"px" 
}).show(); 
//给容器加个黑边框 
Container.css({ 
border:"1px solid #666666" 
}); 
//显示定位层 
//高宽慢慢增大 
Container.animate({ 
marginTop:btnHeight+4, 
height:height+4, 
width:width+4, 
opacity:'100'},speed,function(){ 
//动画结束时 start// 
//显示菜单 
jqShowObj.show(); 
//添加菜单入容器 
Container.append(jqShowObj); 
//去除边框 
Container.css({ 
border:"0px" 
}); 
//显示状态置为true 
display=true; 
//鼠标移入 
jqShowObj.mouseover(function(){ 
clearTimeout(timer); 
}); 
//鼠标移开 
jqShowObj.mouseout(function(){ 
hideMenu(); 
}); 
//动画结束时 end// 
}); 
}; 
//****显示菜单方法结束****// 
//****隐藏菜单方法开始****// 
var hideMenu=function(){ 
clearTimeout(timer); 
//延时隐藏菜单 
timer=setTimeout(function(){ 
//显示边框 
Container.css({ 
border:"1px solid #666666" 
}); 
//清空容器 
Container.empty(); 
//收缩容器 
Container.animate({ 
width:btnWidth,height:btnHeight,marginTop:'0', opacity: '0' 
}, speed,function(){ 
//动画结束时 start// 
//隐藏容器 
Container.hide(); 
//定位层隐藏 
hideDiv.hide(); 
//显示状态置为false 
display=false; 
//动画结束时 end// 
}); 
}, timeout); 
}; 
//****隐藏菜单方法结束****// 
//绑定按钮鼠标经过事件 
button.hover(function(e){ 
//延时显示菜单 
clearTimeout(timer); 
timer=setTimeout(function(){ 
showMenu(); 
}, timeout); 
},function(){ 
clearTimeout(timer); 
//鼠标离开按钮时,如果菜单还是显示状态则隐藏 
if(display){ 
timer=setTimeout(function(){ 
hideMenu(); 
},timeout); 
} 
}); 
};

注:对于select挡住弹出菜单的问题,因为与插件没有关系,所以在此,偶没有解决,放哪个select在哪只是想提醒大家使用弹出菜单时要注意到这个问题,具体的解决方法可以自动搜索,或者在排版上作调整。
文件打包下载
Javascript 相关文章推荐
jQuery 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
javascript实时显示北京时间的方法
Mar 12 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
基于JavaScript实现移除(删除)数组中指定元素
Jan 04 Javascript
javascript产生随机数方法汇总
Jan 25 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
Bootstrap的class样式小结
Dec 01 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
vue.js+Element实现表格里的增删改查
Jan 18 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
JavaScript常用8种数组去重代码实例
Sep 09 Javascript
ASP SQL防注入的方法
Dec 25 #Javascript
jQuery 位置插件
Dec 25 #Javascript
jQuery 浮动广告实现代码
Dec 25 #Javascript
jQuery 操作XML入门
Dec 25 #Javascript
jQuery 动画基础教程
Dec 25 #Javascript
javascript jQuery插件练习
Dec 24 #Javascript
javascript 动态数据下的锚点错位问题解决方法
Dec 24 #Javascript
You might like
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
firefo xml 读写实现js代码
2009/06/11 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
js制作简易年历完整实例
2015/01/28 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python截取两个单词之间的内容方法
2018/12/25 Python
python中实现控制小数点位数的方法
2019/01/24 Python
python交互界面的退出方法
2019/02/16 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
关于打架的检讨书
2014/01/17 职场文书
岗位职责风险防控
2014/02/18 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年材料员工作总结
2014/11/19 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
英雄儿女观后感
2015/06/09 职场文书
结婚典礼致辞
2015/07/28 职场文书
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
详解如何用Python实现感知器算法
2021/06/18 Python