CSS
我有一些简单的 CSStext-indent
在li
in上应用负值ul
:
<style type="text/css">
ul.indent li { text-indent: -20px; padding-left: 20px; }
</style>
<!--[if lte IE 8 ]>
<style type="text/css">
ul.indent li { text-indent: -20px; padding-left: 0; margin-left: 20px; }
</style>
<![endif]-->
由于 Internet Explorer 8 及更低版本处理列表项边距和填充的方式与现代浏览器不同,因此我使用 IE8 及以下版本的条件注释来应用不同的填充和边距值。(旁注:如果有人知道一个通用的、跨浏览器的 CSS 解决方案,可以在不使用条件注释的情况下获得一致的边距/填充,我会全力以赴。我需要支持 IE6 及更高版本、Chrome、Firefox、Safari 和 Opera。 )
HTML
这是我的 HTML:
<ul>
<li>Lorem ipsum...</li>
</ul>
<ul class="indent">
<li>Lorem ipsum...</li>
</ul>
第一个列表完全没有样式(作为实验的对照),第二个列表使用上面定义的 CSS 类 ( class="indent"
)。
结果
这就是问题所在:上面的 HTML/CSS在除 IE8 之外的所有浏览器中都会产生一致的结果。这是我在浏览器中看到的:
我在 IE6、IE7、IE9、Chrome、Firefox、Safari 和 Opera 中看到了左侧的内容。
我看到 IE8 右侧的内容。请注意以红色突出显示的区域。一旦向 CSS 添加负文本缩进值,IE8 似乎会在列表项项目符号和列表项文本之间抛出一堆额外的像素。
如何防止 IE8 添加这些额外的像素?
您可以在此处查看实际代码:http: //jsfiddle.net/Kxb8v/