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 复制数组实现代码
Nov 26 Javascript
JS 获取鼠标左右键的键值方法
Oct 11 Javascript
jQuery获得document和window对象宽度和高度的方法
Mar 25 Javascript
Javascript中的getUTCDay()方法使用详解
Jun 10 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
在Python中使用glob模块查找文件路径的方法
Jun 17 Javascript
jQuery带进度条全屏图片轮播特效代码分享
Jun 28 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
Jan 23 Javascript
JS控制文本域只读或可写属性的方法
Jun 24 Javascript
JS获取和修改元素样式的实例代码
Aug 06 Javascript
javascript创建对象的3种方法
Nov 02 Javascript
JS简单实现数组去重的方法示例
Mar 27 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将会员数据导入到ucenter的代码
2010/07/18 PHP
10款实用的PHP开源工具
2015/10/23 PHP
PHP微信支付实例解析
2016/07/22 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
青年志愿者活动总结
2014/04/26 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
安全目标责任书
2014/07/22 职场文书
整改报告怎么写
2014/11/06 职场文书
2014年学校工作总结
2014/11/20 职场文书
小学感恩节活动总结
2015/03/24 职场文书
房贷收入证明范本
2015/06/12 职场文书
工作时间证明
2015/06/15 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
辞职离别感言
2015/08/04 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS