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 EasyUI 使用介绍
Apr 01 Javascript
JQuery 中几个类选择器的简单使用介绍
Mar 14 Javascript
jQuery对html元素取值与赋值的方法
Nov 20 Javascript
js 动态修改css文件的方法
Aug 05 Javascript
JS弹出可拖拽可关闭的div层完整实例
Feb 13 Javascript
javascript中undefined与null的区别
Aug 16 Javascript
AngularJS ng-bind-template 指令详解
Jul 30 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
Sep 27 Javascript
jQuery中ajax错误调试分析
Dec 01 Javascript
详解微信小程序 相对定位和绝对定位
May 11 Javascript
vue实现购物车小案例
Sep 27 Javascript
小程序点击图片实现png转jpg
Oct 22 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计算页面执行时间的实现代码
2013/06/18 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
php fread读取文件注意事项
2016/09/24 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python图片合成的示例
2020/11/09 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
大学生优秀的自我评价分享
2013/10/22 职场文书
市三好学生主要事迹
2014/01/28 职场文书
学校教师安全责任书
2014/07/23 职场文书
元旦标语大全
2014/10/09 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
golang中的空slice案例
2021/04/27 Golang
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server