我的网站导航在IE6以外的其他浏览器上正确呈现。
问题
而不是以这种方式出现的列表:主页|关于|服务,每个都出现在一个新的行上,例如:
Home
About
Services
Community Pages
<a>
中的<li>
标记会填满整个页面的宽度。
我没有给<li>
一个固定的宽度,因为:导航项的长度是不同的,并且需要占用相对于它们长度的空格。
我的HTML
<div id="nav">
<ul>
<li class="top1space2"><a href="index.php" title="Go To Our Home Page" class="top1space3">Home</a></li>
<li class="top1space2"><a href="#" title="More Jobs on Ngcareers">More Jobs</a>
<ul>
<?php $count=count($c_id);for ($i=0;$i<$count;$i++){ ?>
<li><b><a href="category/<?php echo $c_slug[$i];?>" >» <?php echo $c_name[$i];?></a></b></li>
<?php } ?>
<li class="clearfloat"> </li>
</ul>
</li>
<li class="top1space2"><a href="graduatejobs.php">Graduate Jobs</a></li>
<li class="top1space2"><a href="vacancy.php">Post A Job</a></li>
<li class="top1space2"><a href="month.php" >Jobs This Month</a></li>
<li class="top1space2"><a href="jobalert.php" >GSM Job Alert</a></li>
<li class="top1space2"><a href="employers.php" >Employers</a></li>
<li class="top1space2"><a href="submitcv.php"> Submit CV</a></li>
<li class="top1space2"><a href="subscribe.php" >Subscribe</a></li>
<li class="top1space2"><a href="advertise.php">Advertise</a></li>
<li class="top1space2"><a href="/about/contact-us">Contact</a></li>
</ul>
</div>
我的CSS:
#nav ul {
padding: 0px;
width: 1020px;
margin-top: 0px;
margin-right: auto;
margin-bottom: 0px;
margin-left: auto;
list-style-type: none;
font-family: Verdana, Geneva, sans-serif;
font-size: 12px;
height: 32px;
}
#nav ul li {
float: left;
display: block;
}
.top1space2 {
background-color: #086DA1;
background-image: url(../pics/slice1.jpg);
background-repeat: repeat-x;
display: block;
height: 36px;
}
.top1space3 {
color: #000;
font-weight: bold;
background-color: #F93;
background-image: url(../pics/slice2.jpg);
background-repeat: repeat-x;
}
#top1space3 {
color: #FFF;
font-weight: bold;
background-color: #111;
background-image: url(../pics/btnbg.jpg);
background-repeat: repeat-x;
}
#nav ul .top1space2 a {
color: #FFC;
text-decoration: none;
font-weight: bold;
font-size: 12px;
display: block;
height: 36px;
line-height: 36px;
text-align: center;
padding-right: 10px;
padding-left: 10px;
border-right-width: 1px;
border-right-style: solid;
border-right-color: #9CF;
}
#nav ul .top1space2 a:hover {
color: #000;
text-decoration: none;
cursor: pointer;
background-color: #F93;
background-image: url(../pics/slice2.jpg);
background-repeat: repeat-x;
}
#nav ul .top1space2:hover {
cursor: pointer;
}
请问如何在IE6中修复此问题,而不给予元素固定的宽度?
答案 0 :(得分:1)
肯定是IE漏洞。 IE6(以及我相信的IE7)将width:auto
的浮动元素渲染为width:100%
。
您可以将此规则用于IE6 / 7以修复布局。
#nav ul li {
float: left;
display: block;
width:0;
white-space:nowrap;
}
并使用conditional comment仅应用于IE6 / 7或更多版本,只需使用IE6 / 7无法理解的选择器覆盖width:auto
,例如:
#nav ul li {
float: left;
display: block;
width:0;
white-space:nowrap;
}
#nav ul > li {
width:auto;
}
答案 1 :(得分:1)
使你的li元素内联(从任何元素中删除所有浮动)并从链接中删除display:block。我已经创建了一个jsfiddle来展示它是如何工作的。要记住的一件事是:通过删除所有浮动并只显示内联的所有内容,您将在列表中的链接元素之间找到间隙。有一种方法可以摆脱这种情况(我在jsfiddle中展示),但它需要从li元素之间删除任何空间,包括换行符。它会让你的标记变得有点混乱,但我想这是你关心的多少以及你对继续支持IE6的关注程度。
我还清理了很多css声明 - 那里有很多重复的规则和不必要的标记 - 显然这是你的选择,但它使得样式应用得更加清晰。
修改更新了jsfiddle以使“主页”链接成为正确的颜色