我一直在努力让我的CSS菜单在所有版本的IE中运行,我认为我差点把它弄下来,除了IE7。
在the site in question上,我正在使用以下CSS:
.header-bar {
position:fixed;
top: 0;
left: 0;
right: 0;
padding: 0;
background: #333;
font-size: 1.2em;
font-weight: bold;
z-index: 1000;
}
.header-bar a:hover {
text-decoration: none;
}
.header-bar a {
display: inline-block;
padding: 7px 10px 7px 10px;
color: #2C8FAA;
font-size:1.1em;
}
.header-bar ul {
list-style-type: none;
display: inline-block;
position: relative;
height: auto;
}
.header-bar ul li {
background: #333;
}
.header-bar ul li:hover {
background: #444;
color: #34AACB;
}
.header-bar ul.nav > li {
display: inline-block;
}
.header-bar ul ul {
display: none;
}
.header-bar ul ul li {
border-top: 1px solid black;
}
.header-bar ul li:hover > ul {
margin: 0;
display: block;
position: absolute; /* overrides other settings */
/* top: 28px; */
height: 28px;
min-width: 200px;
}
.header-bar ul ul li:hover ul {
top: 0; /* match position of parent, which should be position: relative; */
position: absolute;
margin-left: 199px; /* 150px min-width -1 px border */
border-left: 1px solid black;
}
.header-bar ul li a {
display: block;
}
.header-bar ul li ul li {
position: relative;
}
.header-bar ul ul li:hover ul ul {
position: absolute;
top: -48px; /* 28 + 1 for border */
margin-left: 199px; /* 150px min-width -1 px border */
border-left: 1px solid black;
}
.header-bar ul ul li:hover ul ul {
top: 0;
}
设置如下样式的HTML:
<div class="header-bar">
<div class="container">
<ul class="nav">
<li>
<a href="#">Menu Item 1</a>
<ul>
<li>
<a href="#">Menu Item 1, Submenu 1</a>
<ul>
<li><a href="#">Menu Item 1, Submenu 1, Sub-submenu 1</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
这似乎适用于子菜单,但父菜单项似乎采用了块布局,而不是inline-block
。在这一点上,我正试图与IE作斗争,并且会欣赏一双额外的双眼。
答案 0 :(得分:2)
尝试正确关闭li
代码:
<div id="header-bar">
<div class="container">
<ul class="nav">
<li><a href="#">Menu Item 1</a></li>
<ul>
<li><a href="#">Menu Item 1, Submenu 1</a></li>
<ul>
<li><a href="#">Menu Item 1, Submenu 1, Sub-submenu 1</a></li>
</ul>
</ul>
</ul>
</div>
</div>
<强> - 编辑 - 强>
在你的css上使用它:
.header-bar ul.nav > li {
display: inline-block;
*float:left
}
它应该成功。
答案 1 :(得分:1)
一些事情。
<LI>
标记未正确关闭。display: inline-block;
。待办事项:
<li>
代码。使用此CSS:
.header-bar ul.nav > li {
display: inline-block;
*display: inline;
*zoom: 1;
}
验证问题
如果你真的担心没有黑客,你可以这样做。以这种方式使用Paul Irish的条件HTML类:
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
在CSS中,你可以这样说:
.ie6 .header-bar ul.nav > li,
.ie7 .header-bar ul.nav > li {
display: inline;
zoom: 1;
}
现在您的HTML和CSS都有效。