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 相关文章推荐
javascript面向对象特性代码实例
Jun 12 Javascript
js实现进度条的方法
Feb 13 Javascript
JS检测数组类型的方法小结
Mar 14 Javascript
详解vue mixins和extends的巧妙用法
Dec 20 Javascript
vue环形进度条组件实例应用
Oct 10 Javascript
react+ant design实现Table的增、删、改的示例代码
Dec 27 Javascript
js中怎么判断两个字符串相等的实例
Jan 17 Javascript
Element-ui DatePicker显示周数的方法示例
Jul 19 Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
用Golang运行JavaScript的实现示例
Nov 25 Javascript
JavaScript实现10秒后再次获取验证码
Dec 02 Javascript
小程序实现文字循环滚动动画
Jun 14 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
短波收音机简介
2021/03/01 无线电
PHP 日常开发小技巧
2009/09/23 PHP
PHP操作数组相关函数
2011/02/03 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
PHP echo()函数讲解
2019/02/15 PHP
超级强大的表单验证
2006/06/26 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
python 运算符 供重载参考
2009/06/11 Python
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
python读取并写入mat文件的方法
2019/07/12 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
求职信范文怎么写
2014/01/29 职场文书
老同学聚会感言
2014/02/23 职场文书
先进班集体申报材料
2014/12/26 职场文书
民事起诉书范本
2015/05/19 职场文书
单位同意报考证明
2015/06/17 职场文书
高中同学会致辞
2015/08/01 职场文书
贷款担保书范本
2015/09/22 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS