嘿伙计们我已经在stackoverflow(JQuery slideUp horizontal menu instead of slideDown)处使用了另一个问题所发布的代码,并试图使滑动子菜单宽度与主菜单一样100%。它可以在Firefox,Safari,Chrome,Opera中运行,但不适用于IE ......
我知道它与CSS有关但我被困住了,不知道如何解决它。
以下是代码:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
<script>
$(function() {
$("#menu").find("li").each(function() {
if ($(this).find("ul").length > 0) {
$(this).mouseenter(function() {
$(this).find("ul").stop(true, true).slideDown();
});
$(this).mouseleave(function() {
$(this).find("ul").stop(true, true).slideUp();
});
}
});
});
</script>
<style>
html, body {padding:0;margin:0;}
#menu {
display:block;
margin:120px auto 20px;
position:relative;
background-color:#6a6a6a;
font:16px Tahoma, Sans-serif;
width:100%;
}
#menu ul {
padding:0;
margin:0;
width:100%;
}
#menu li {
float:left;
list-style-type:none;
}
#menu ul:after {
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
#menu li a {
display:block;
padding:10px 20px;
color:#eee;
text-decoration:none;
}
#menu li a:focus {
outline:none;
text-decoration:underline;
}
#menu li:first-child a {
border-left:none;
}
#menu li.last a {
border-right:none;
}
#menu a span {
display:block;
float:right;
margin-left:5px;
}
#menu ul ul {
display:none;
width:100%;
position:absolute;
background:#6a6a6a;
bottom:38px;
left:0;
}
#menu ul ul li {
float:left;
}
#menu ul ul a {
padding:5px 10px;
border-left:none;
border-right:none;
font-size:14px;
}
a:hover {
cursor: pointer;
}
</style>
</head>
<body>
<div id="menu">
<ul>
<li>
<a>Item1</a>
</li>
<li>
<a>Item2</a>
<ul>
<li><a href="#">item2-1</a></li>
<li><a href="#">item2-2</a></li>
<li><a href="#">item2-3</a></li>
</ul>
</li>
<li>
<a>Item3</a>
<ul>
<li><a href="#">item3-1</a></li>
<li><a href="#">item3-2</a></li>
<li><a href="#">item3-3</a></li>
</ul>
</li>
<li>
<a>Item4</a>
</li>
</ul>
</div>
<body>
<html>
答案 0 :(得分:0)
不要忘记在你的标记中添加一个Doctype,因为没有它在怪癖模式下的IE ork哦,是的,这很糟糕。另外,不要忘记关闭你的标签,如果你不关闭优秀浏览器也不会在乎,或者至少会尝试修复它,但IE会变得疯狂。
所以你应该做的第一件事是:
<!doctype html>
<html>
<head>
<!-- bla bla bla -->
</head>
<body>
<div id="menu">
<ul>
<!-- bla bla bla -->
</ul>
</div>
</body>
</html>
请注意doctype以及body
和html
结束标记。
现在,魔术将会发生在javascript:
$(function() {
$("#menu").find("li").each(function() {
var $el = $(this);
if ($el.find("ul").length > 0) {
$el.mouseenter(function() {
$el.find("ul").stop().css("width", $(window).width()).slideDown();
});
$el.mouseleave(function() {
$el.find("ul").stop().slideUp();
});
}
});
});
请注意,此代码将使用窗口的确切宽度更新ul的宽度,因此,我摆脱了width: 100%;
中的#menu ul ul
语句。
希望有效。链接:http://jsbin.com/oliya3。