我在我正在开发的网站中实现了一个 CSS 下拉菜单。它可以在除 IE 之外的任何浏览器中完美运行。
在 IE 中,下拉菜单将出现在页面的完全不同的区域,使得在悬停消失之前无法单击链接。我在下面包含了我的.css
和.html
(将导航结构更改为基本的)文件中的代码。此导航通过 PHP 包含放置到我的网站布局中,因此我的导航栏显示的区域居中,距离主页顶部 230 像素。
当我使用DOCTYPE
严格模式时,它会按预期工作,但是我还有其他无法更改的问题,所以我宁愿不使用 a DOCTYPE
(否则我将被迫重新编码整个网站)
我确信必须有某种解决方法...即使它在 IE 中的显示不完全相同,我只需要它可以使用!
任何帮助是极大的赞赏!!我花了好几个星期试图解决这个头痛...
CSS文件:
#catnav {
padding: 0;
clear: both;
height: 32px;
width: 980px;
background: #000;
position: absolute;
top: 230px;
z-index: 100;
}
#nav {
list-style: none;
margin: 0;
padding: 0;
position: relative;
z-index: 100;
}
#nav ul {
margin: 0;
padding: 0;
}
#nav li {
float: left;
margin: 0;
padding: 0;
list-style: none;
position: relative;
}
#nav a {
display: block;
line-height: 32px;
margin: 0 0px;
padding: 0;
font-size: 12px;
color: #fff;
font-weight: bold;
}
#nav li a:hover {
color: #fff;
text-decoration: underline;
display: block;
}
#nav li ul {
list-style: none;
position: absolute;
width: 0px;
left: -999em;
}
#nav li:hover ul, #nav li.sfhover ul {
left: auto;
}
#nav li li {
float: left;
margin: 0;
padding: 0;
width: 120px;
}
#nav li li a {
width: 129px;
height: 24px;
line-height: 24px;
color: #000;
border-bottom: 1px solid #000;
background: #c5c5c5;
margin: 0;
padding: 5px 20px 5px 15px;
}
#nav li li a:hover {
border-top: 1px solid #131f27;
background: #8f7c58;
padding: 5px 20px 5px 15px;
}
#nav li:hover, #nav li.sfhover { /* prevents IE7 drop-down menu bug (focus on a page element prevents nested menus from disappearing) */
position: static;
}
文件:
<script type="text/javascript"><!--//--><![CDATA[//><!--
sfHover = function() {
if (!document.getElementsByTagName) return false;
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
//--><!]]></script>
<link rel="stylesheet" href="css.css">
<div id="catnav">
<div id="nav">
<ul>
<li><a href="#" title="Title 1">Title Link 1</a></li>
</ul>
<li><a href="#" title="Title Link 2"></a>
<ul>
<li><a href="#" title="Title">Title Link2 </a></li>
</ul>
</li>
<li><a href="#" title="Title 3">Title Link 3</a>
<ul>
<li><a href="#" title="Sub Link 1">Sub Link 1</a></li>
</ul>
</li>
<li><a href="#" title="Title 4">Title 4</a>
<ul>
<li><a href="#" title="Title">Sub Link 1</a></li>
</ul>
</li>
<li><a href="#" title="Title 5">Title Link 5</a></li>
<li><a href="#" title="Title 6 ">Title Link 6</a></li>
<li><a href="#" title="Title 7">Title Link 7</a></li>
</ul>
</div>
</div>
我怎样才能使 IE 至少将这些下拉菜单显示在其标题下方而不是230px
下方和右侧?