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 相关文章推荐
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
Jul 25 Javascript
jQuery 选择器项目实例分析及实现代码
Dec 28 Javascript
js中复制行和删除行的操作实例
Jun 25 Javascript
Node.js 制作实时多人游戏框架
Jan 08 Javascript
Jquery判断form表单数据是否变化
Mar 30 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 Javascript
微信小程序分页加载的实例代码
Jul 11 Javascript
微信小程序如何访问公众号文章
Jul 08 Javascript
vue2 拖动排序 vuedraggable组件的实现
Aug 08 Javascript
layui使用label标签的方法
Sep 14 Javascript
JS pushlet XMLAdapter适配器用法案例解析
Oct 16 Javascript
vue-cli4.5.x快速搭建项目
May 30 Vue.js
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
DSP接收机前端设想
2021/03/02 无线电
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
python先序遍历二叉树问题
2017/11/10 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
基于pandas中expand的作用详解
2019/12/17 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
京东国际站:JOYBUY
2017/11/23 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
给民警的表扬信
2014/01/08 职场文书
辩论赛主持词
2014/03/18 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
保外就医申请书范文
2015/08/06 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang