
html代码结构:
<li class="menu">
<div><span class="l"> </span><a href="#">线路</a><span class="r"> </span></div>
<ol>
<li><a href="#">线路预订</a></li>
<li><a href="#">线路管理</a></li>
</ol>
</li>
菜单按照上面的结构<li class="menu"></li>循环下去
js代码结构:
<script type="text/javascript">
$(document).ready(function(){
$(".nav li.menu").each(function(){
$(this).hover(
function(){
$(this).addClass("menu_hover");
positionEvent("ol",this);
$("ol",this).fadeIn("fast");},
function(){$(this).removeClass("menu_hover");});
if(document.all){
$(this).hover(
function(){
$(".nav li.menu").removeClass("menu_hover2");
positionEvent("ol",this);
$(this).addClass("menu_hover menu_hover2");},
function(){
$(this).removeClass("menu_hover menu_hover2");}
);
}
});
});
function positionEvent(object,id){
var liWidth = $(id).width();
var olWidth = $(object,id).width();
var offset = $(id).offset();
var leftPosition = offset.left - (olWidth - liWidth)/2;
$(object,id).css("left",leftPosition);
}
</script>
positionEvent()是用来为二级菜单定位的方法,leftPosition值是子菜单相对于父菜单水平居中时距离父容器的左距离。
二级菜单绝对定位后用top:-999px隐藏起来,然后支持伪类的浏览器就可以不运行if(document.all){},通过:hover方法让top:25px就能让二级菜单显示出来达到效果。
ie浏览器不支持伪类,if(document.all){}就是为ie而写的,通过鼠标略过和移走分别添加和移除menu_hover2样式,其目的和:hover一样让top:25px.
126

被折叠的 条评论
为什么被折叠?



