【发布时间】:2011-11-17 07:20:12
【问题描述】:
我有一个页面,其中臭名昭著的 3px 额外垂直空间(在每个 li 元素下方)在 IE7 中呈现在我的所有列表项上。我有一个特定的情况,我需要绝对定位在li 中的文本,以便可以将其容器设置为更小的宽度,并且文本延伸到容器之外。这是我正在使用的代码:
<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 应用了不同的 margin-bottom(1px 而不是 4px),效果很好,但看起来不正确....
我已经尝试了456 Berea St 和this page 中描述的一些标准修复,但要么我将它们错误地应用到我的示例中,要么是我的代码结构方式中的其他问题。对修复或完成此布局的其他方法有何建议?
【问题讨论】:
-
你可以给div ul li { float: left;清除:左; } 但我认为这比调整边距更清晰。
-
我在我的示例代码上试过这个,但没有看到对 3px 额外空间有任何影响。感谢您对此的帮助
-
我更新了我的答案,它现在是完成您想要的布局的另一种方式。
标签: html css layout internet-explorer-7