DIV菜单层实现代码


Posted in Javascript onNovember 19, 2010

他便给我截了个图是,QQ商城的分类菜单,效果如下:
DIV菜单层实现代码
我看了一下,咦!咱们这博客园也是这种呀!我自己之前也没做过这种效果,正好自己试试!(我不是做美工的,不过到js略懂罢了!)
一、分析:
1,右边大分类肯定是一个层下面用divMenuContent表示
2,左边鼠标移上去的那个应该也是个层,下面用divMenuItem表示
问题:怎么样表现过如图的样子呢?左边和右边看起来是一体的!于是想到divMenuItem的右边为none,而且z轴高于divMenuContent,让它正好压在divMenuContent的边框上!
下面是两个层的样式:

#divMenuItem 
{ 
position:absolute; 
z-index:99; 
width:147px; 
height:25px; 
border:3px solid #963; 
border-right:0px; 
background-color:#FC9; 
display:none; 
} 
#divMenuContent 
{ 
display:none; 
position:absolute; 
z-index:98; 
width:200px; 
height:505px; 
border:3px solid #963; 
background-color:#FC9; 
}

然后布局一个页面测试用:
<body> 
<br /> 
<br /> 
<br /> 
<ul class="menu" id="menu"> 
<li>aaaaaaaaaaaaa</li> 
<li>bbbbbbbbbbbbb</li> 
<li>cccccccdccccc</li> 
<li>ddddddddddddd</li> 
<li>eeeeeeeeeeeee</li> 
<li>fffffffffffff</li> 
<li>ggggggggggggg</li> 
<li>hhhhhhhhhhhhh</li> 
</ul> 
<div id="divMenuItem"></div> 
<div id="divMenuContent"></div> 
</body>

简单设置一下menu的样式:
body 
{ 
margin:0px; 
padding:0px; 
} 
.menu 
{ 
list-style-type:none; 
float:left; 
border:1px solid green; 
width:150px; 
} 
.menu li 
{ 
height:25px; 
background-color:#CCC; 
border:1px solid red; 
}

主要实现:
$("#menu li").mouseenter(function() 
{ 
var offset=$(this).offset(); 
$("#divMenuItem") 
.offset({ 
top:offset.top,left:offset.left 
}) 
.html($(this).html()) 
.show() 
$("#divMenuContent") 
.offset({ 
top:offset.top,left:offset.left+$(this).width()-1 
}) 
.show() 
})

这里主要就是定位问题了!逻辑上是对的,可发现除一次移上去显示正常外,以后每移上的第一个都有点错位!这里也是一直没搞明白是怎么回事!后来在show()后又offset()了一下就好了,希望高人指明。
修改后的全部JS如下:
$(function(){ 
$("#divMenuItem,#divMenuContent").mouseout(function(e) 
{ 
if($(e.toElement).parent().attr("id")!="menu" && $(e.toElement).attr("id")!="divMenuContent") 
{ 
$("#divMenuItem").hide(); 
$("#divMenuContent").hide(); 
} 
}) 
$("#menu li").mouseenter(function() 
{ 
var offset=$(this).offset(); 
$("#divMenuItem") 
.offset({ 
top:offset.top,left:offset.left 
}) 
.html($(this).html()) 
.show() 
.offset({ 
top:offset.top,left:offset.left 
}); 
$("#divMenuContent") 
.offset({ 
top:offset.top,left:offset.left+$(this).width()-1 
}) 
.show() 
/* .offset({ 
top:offset.top,left:offset.left+$(this).width()-1 
});*/ 
.offset({ 
top:$("#menu li").first().offset().top,left:offset.left+$(this).width()-1 
}); 
}) 
})

里面有一块注释,offset()那块,它和下面的offset()是两个效果,现在的效果图:

DIV菜单层实现代码

 

注释部分换一下效果图:

DIV菜单层实现代码

 

效果已在:IE6,7,8,chrome中测试通过!
代码打包下载/201011/yuanma/menu_jquery1.rar

Javascript 相关文章推荐
jQuery最佳实践完整篇
Aug 20 Javascript
js鼠标及对象坐标控制属性详细解析
Dec 14 Javascript
js判断当前浏览器类型,判断IE浏览器方法
Jun 02 Javascript
使用js画图之画切线
Jan 12 Javascript
jQuery学习笔记之基础中的基础
Jan 19 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
jQuery使用方法
Feb 04 Javascript
AngulerJS学习之按需动态加载文件
Feb 13 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 Javascript
js简单遍历获取对象中的属性值的方法示例
Jun 19 Javascript
vue+ts下对axios的封装实现
Feb 18 Javascript
jQuery 定时局部刷新(setInterval)
Nov 19 #Javascript
基于jquery的跨域调用文件
Nov 19 #Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 #Javascript
jQuery lazyload 的重复加载错误以及修复方法
Nov 19 #Javascript
JQuery 选择和过滤方法代码总结
Nov 19 #Javascript
基于jquery的一个OutlookBar类,动态创建导航条
Nov 19 #Javascript
非阻塞动态加载javascript广告实现代码
Nov 17 #Javascript
You might like
PHP入门之常量简介和系统常量
2014/05/12 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
js实现分割上传大文件
2016/03/09 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
微信小程序实现watch监听
2020/06/04 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
python生成日历实例解析
2014/08/21 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
python实现DES加密解密方法实例详解
2015/06/30 Python
python 实现登录网页的操作方法
2018/05/11 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
Django 重写用户模型的实现
2019/07/29 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Python 线程池用法简单示例
2019/10/02 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
公司大门门卫岗位职责
2014/06/11 职场文书
学前班学生评语
2014/12/29 职场文书
社区国庆节活动总结
2015/03/23 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL