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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(7)
Dec 23 Javascript
给Javascript数组插入一条记录的代码
Aug 30 Javascript
Jquery 设置标题的自动翻转
Oct 03 Javascript
js图片自动切换效果处理代码
May 07 Javascript
jquery 图片缩放拖动的简单实例
Jan 08 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
May 09 Javascript
jQuery实现的左右移动焦点图效果
Jan 14 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
Angular2使用Augury来调试Angular2程序
May 21 Javascript
JS一个简单的注册页面实例
Sep 05 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 jQuery
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 魔术函数使用说明
2010/05/14 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
使用js实现数据格式化
2014/12/03 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
详解在Python程序中使用Cookie的教程
2015/04/30 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
python sorted函数原理解析及练习
2020/02/10 Python
python爬虫可以爬什么
2020/06/16 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
Django数据统计功能count()的使用
2020/11/30 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
保险公司晨会主持词
2014/03/22 职场文书
客房服务员岗位职责
2015/02/09 职场文书
护士医德医风心得体会
2016/01/25 职场文书
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL