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+jquery实现无限极联动
May 23 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
Jan 06 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
实例解析angularjs的filter过滤器
Dec 14 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 Javascript
Bootstrap实现的标签页内容切换显示效果示例
May 25 Javascript
详解Vue.use自定义自己的全局组件
Jun 14 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
element-ui多文件上传的实现示例
Apr 10 Javascript
关于AOP在JS中的实现与应用详解
May 06 Javascript
JS+CSS实现动态时钟
Feb 19 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
很实用的一个完整email发送程序
2006/10/09 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
python 查找文件名包含指定字符串的方法
2018/06/05 Python
python实现浪漫的烟花秀
2019/01/30 Python
python中正则表达式与模式匹配
2019/05/07 Python
用pycharm开发django项目示例代码
2019/06/13 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
python ssh 执行shell命令的示例
2020/09/29 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
高中运动会广播稿
2014/01/21 职场文书
工作表现自我评价
2014/02/08 职场文书
出租房屋协议书
2014/09/14 职场文书
公司管理制度范本
2015/08/03 职场文书
初中英语教学反思范文
2016/02/15 职场文书
员工升职自我评价
2019/03/26 职场文书