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中的Location地址对象
Jan 16 Javascript
JavaScript 三种不同位置代码的写法
Oct 25 Javascript
jquery ui bootstrap 实现自定义风格
Nov 14 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 Javascript
轻松掌握JavaScript中的Math object数学对象
May 26 Javascript
Javascript 5种方法实现过滤删除前后所有空格
Jun 22 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
JavaScript数组排序reverse()和sort()方法详解
Dec 24 Javascript
仿ElementUI实现一个Form表单的实现代码
Apr 23 Javascript
vue cli 3.0 搭建项目的图文教程
May 17 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
写一个用户在线显示的程序
2006/10/09 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
jQuery 渐变下拉菜单
2009/12/15 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
Python素数检测的方法
2015/05/11 Python
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
python字符串与url编码的转换实例
2018/05/10 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
pygame实现飞机大战
2020/03/11 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
Traffic People官网:女式花裙、上衣和连身裤
2020/10/12 全球购物
基层党支部公开承诺书
2014/05/29 职场文书
搞笑车尾标语
2014/06/23 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
交通事故被告代理词
2015/05/23 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
Python OpenCV实现图形检测示例详解
2022/04/08 Python
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python