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 相关文章推荐
菜单效果
Oct 14 Javascript
jQuery 白痴级入门教程
Nov 11 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
May 13 Javascript
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
获取数组中最大最小值方法js代码(自写)
Aug 12 Javascript
JS实现的自定义网页拖动类
Nov 06 Javascript
JS组件中bootstrap multiselect两大组件较量
Jan 26 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 Javascript
js+html5实现半透明遮罩层弹框效果
Aug 24 Javascript
Node中使用ES6语法的基础教程
Jan 05 Javascript
Angular通过指令动态添加组件问题
Jul 09 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 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
win10系统中安装scrapy-1.1
2016/07/03 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
html5的localstorage详解
2017/05/09 HTML / CSS
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
校园演讲稿汇总
2014/05/21 职场文书
公司开业致辞
2015/07/29 职场文书
初中地理教学反思
2016/02/19 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
Redis如何实现分布式锁
2021/08/23 Redis