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 OOP面向对象介绍
Dec 02 Javascript
一个简单的js树形菜单
Dec 09 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
Dec 13 Javascript
JavaScript基础知识学习笔记
Dec 02 Javascript
原生javascript实现图片滚动、延时加载功能
Jan 12 Javascript
在Vue中如何使用Cookie操作实例
Jul 27 Javascript
vue.js简单配置axios的方法详解
Dec 13 Javascript
Vue 拦截器对token过期处理方法
Jan 23 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
Jan 24 Javascript
详解使用React制作一个模态框
Mar 14 Javascript
Vue.js中的extend绑定节点并显示的方法
Jun 20 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自动生成月历代码
2006/10/09 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
php实现简单文件下载的方法
2015/01/30 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
初识Node.js
2014/09/03 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python中的字典遍历备忘
2015/01/17 Python
Python检测网站链接是否已存在
2016/04/07 Python
python opencv之分水岭算法示例
2018/02/24 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
国际花店:Pickup Flowers
2020/04/10 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
门诊挂号室室长岗位职责
2013/11/27 职场文书
销售会计工作职责
2013/12/02 职场文书
学生安全责任书模板
2014/07/25 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
Python matplotlib多个子图绘制整合
2022/04/13 Python