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的$(document).ready()和onload的加载顺序
May 26 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
Nov 11 Javascript
Js四则运算函数代码
Jul 21 Javascript
IE的fireEvent方法概述及应用
Feb 22 Javascript
jquery 多行文本框(textarea)高度变化
Jul 03 Javascript
JavaScript获取网页中第一个链接ID的方法
Apr 03 Javascript
javascript实现无缝上下滚动特效
Dec 16 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
vue实现记事本功能
Jun 26 Javascript
基于vue手写tree插件的那点事儿
Aug 20 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
Jan 04 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 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将字符串转换为数组实例讲解
2020/05/05 PHP
JS backgroundImage控制
2009/05/19 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python读取和保存图片5种方法对比
2018/09/12 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
python处理document文档保留原样式
2019/09/23 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
旅游管理毕业生自荐书
2014/02/02 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
海飞丝广告词
2014/03/20 职场文书
企业负责人任命书
2014/06/05 职场文书
学校创先争优活动总结
2014/08/28 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
庆七一活动简报
2015/07/20 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python