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基本语法分析说明
Jun 15 Javascript
javascript 面向对象编程基础:封装
Aug 21 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
Mar 16 Javascript
jQuery+ajax实现无刷新级联菜单示例
May 21 Javascript
javascript框架设计之类工厂
Jun 23 Javascript
JavaScript实现的多种鼠标拖放效果
Nov 03 Javascript
Vue学习笔记进阶篇之函数化组件解析
Jul 21 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 Javascript
多个Vue项目部署到服务器的步骤记录
Oct 22 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
第十五节--Zend引擎的发展
2006/11/16 PHP
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Python中的匿名函数使用简介
2015/04/27 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
幼儿园门卫制度
2014/01/29 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
高中综合实践活动总结
2014/07/07 职场文书
五五普法心得体会
2014/09/04 职场文书
新娘婚礼致辞
2015/07/27 职场文书
礼貌问候语大全
2015/11/10 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
Python快速实现一键抠图功能的全过程
2021/06/29 Python