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 相关文章推荐
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
编程语言JavaScript简介
Oct 16 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
Sep 12 Javascript
jQuery xml字符串的解析、读取及查找方法
Mar 01 Javascript
Uploadify上传文件方法
Mar 16 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
Sep 25 Javascript
详解vue组件开发脚手架
Jun 15 Javascript
解决layui动态添加的元素click等事件触发不了的问题
Sep 20 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
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数据加密详解
2013/06/18 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
php对称加密算法示例
2014/05/07 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
鼠标图片振动代码
2006/07/06 Javascript
javascript 流畅动画实现原理
2009/09/08 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
在centos7中分布式部署pyspider
2017/05/03 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
客服工作职责
2013/12/11 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
大学生社会实践评语
2014/04/25 职场文书