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对话框使用方法(警告框 javascript确认框 提示框)
Jan 07 Javascript
javascript操作excel生成报表示例
May 08 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
Aug 01 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
Oct 17 Javascript
vue.js 表格分页ajax 异步加载数据
Oct 18 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
canvas基础绘制-绚丽倒计时的实例
Sep 17 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
Apr 14 Javascript
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
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实现以只读方式打开文件的方法
2015/03/16 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
Vue指令的钩子函数使用方法
2017/03/20 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
python生成带有表格的图片实例
2019/02/03 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
简单了解Python write writelines区别
2020/02/27 Python
别名指示符是什么
2012/10/08 面试题
《雾凇》教学反思
2014/02/17 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
继续教育个人总结
2015/03/03 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
入党介绍人意见范文
2015/06/01 职场文书
初中数学教学随笔
2015/08/15 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python