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 相关文章推荐
js控制表单操作的常用代码小结
Aug 15 Javascript
Jquery中给animation加更多的运作效果实例
Sep 05 Javascript
js中opener与parent的区别详细解析
Jan 14 Javascript
关于img的href和src取变量及赋值的方法
Apr 28 Javascript
js脚本实现数据去重
Nov 27 Javascript
form表单转Json提交的方法(推荐)
Sep 23 Javascript
详解动画插件wow.js的使用方法
Sep 13 Javascript
关于Webpack dev server热加载失败的解决方法
Feb 22 Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 Javascript
vue中利用Promise封装jsonp并调取数据
Jun 18 Javascript
Vue 实现html中根据类型显示内容
Oct 28 Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 28 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
改进的IP计数器
2006/10/09 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
前端必学之PHP语法基础
2016/01/01 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
window.parent与window.openner区别介绍
2012/04/12 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Python collections模块实例讲解
2014/04/07 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python利用正则表达式提取字符串
2016/12/08 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
python 实现端口扫描工具
2020/12/18 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
医学生求职自荐信
2013/10/25 职场文书
医学类个人求职信范文
2014/02/05 职场文书
推荐信格式要求
2014/05/09 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
PHP策略模式写法
2021/04/01 PHP
Android存储中最基本的文件存储方式
2022/04/30 Java/Android