我有一个页面,其中臭名昭着的3px额外垂直空间(在每个li元素下面)在IE7中呈现在我的所有列表项上。我有一个特定的情况,我需要文本绝对定位在<=>,以便其容器可以设置为较小的宽度,<!>放大器;文本扩展到容器之外。这是我正在使用的代码:

<style type="text/css">
 div { width: 160px; font: 8pt arial,helvetica,sans-serif; border: 1px solid #999; }
  div ul { margin: 0; padding: 0; list-style: none; }
   div ul li { width: 30px; height: 20px; margin: 0 0 4px; padding: 0; background-color: #c00; }
    div ul li a { display: block; line-height: 20px; color: #000; text-decoration: none; }
     div ul li a em { position: absolute; margin-left: 5px; }
</style>

<div>
 <ul>
  <li><a href="#"><em>#1: premature brake wear</em></a></li>
  <li><a href="#"><em>#2: squeaky brakes</em></a></li>
  <li><a href="#"><em>#3: bad gas mileage</em></a></li>
 </ul>
</div>

我正在寻找一种不涉及IE7特定的CSS hack的解决方案,只是为了纯粹的CSS。我已经读过很多情况下,给出包含元素hasLayout解决了这些3px额外高度问题的大部分问题,但是我无法弄清楚这个代码。

在我的应用程序中,我最终为IE7应用了一个不同的保证金底部(1px而不是4px),它工作得很好,但似乎不对....

测试页面

这里的实时应用

我已尝试了 456 Berea St 中描述的一些标准修复程序<!>安培; 此页面,但我要么将它们错误地应用到我的示例中,要么是在我的代码结构的方式。有任何修复建议或其他方法来完成这种布局吗?

有帮助吗?

解决方案

尝试以下方法:

<style type="text/css">
    div.test { width: 160px; font: 8pt arial,helvetica,sans-serif; border: 1px solid #999; overflow:hidden; }
    div.test ul { margin: 0; padding: 0; list-style: none;}
    div.test ul li { margin: 0 0 4px; }
    div.test ul li a { display: inline-block; }
    div.test ul li a { display: block; padding: 0 5px; line-height: 20px; color: #000; text-decoration: none; position: relative; z-index: 2; }
    div.test ul li b {   background-color: #c00; height: 20px; width: 20px; position: absolute; display: block; z-index: 1; }
</style>

<div class="test">
    <ul>
        <li><b></b><a href="#"><em>#1: premature brake wear</em></a></li>
        <li><b></b><a href="#"><em>#2: squeaky brakes</em></a></li>
        <li><b></b><a href="#"><em>#3: bad gas mileage</em></a></li>
    </ul>
</div>

我无法解决你所拥有的问题比你已经拥有的更清洁(另一个解决方法是浮动LI并清除它们)然而,我给你另一种方法来做到这一点。我承认它是最干净的HTML,但它确实巧妙地回避了这个问题。

其他提示

我没有尝试过这段代码,但是我在li元素中指定了一个高度,然后添加了vertical-align:bottom,所以代码是:

div.test ul li { height: 20px; vertical-align: bottom;}

适用于我,即6 <!>放大器; 7

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top