0

所以我知道 IE8 及以下版本不喜欢inline-block,但我读到inline应该会导致相同的行为。所以我修改了我的复制main.cssmain-ie8below.css并将所有更改inline-blockinline. 我使用以下代码来尝试实现这一目标:

        <!--[if lte IE 8]>
            <link rel="stylesheet" type="text/css" href="/media/css/main-ie8below.css" />
        <![endif]-->
        <!--[if gt IE 8]>
            <link rel="stylesheet" type="text/css" href="/media/css/main.css" />
        <![endif]-->
        <!--[if !IE]><!-->
            <link rel="stylesheet" type="text/css" href="/media/css/main.css" />
         <!--<![endif]-->

但是,这是行不通的。看来我的 if 语句不正确。是这样吗,还是我错过了其他东西?

这是有问题的 HMTL(删除了无用的东西):

    <nav id="main_nav" role="navigation"><!--
                            <div><a href=""><img src=""  /></a></div><!--
                    --><div><a href=""><img src=""  /></a></div><!--
                    --><div><a href=""><img src=""  /></a></div><!--
                    --><div><a href=""><img src=""  /></a></div><!--
                    -->

这是一个小提琴,除了没有图像:

http://jsfiddle.net/bqXsU/

4

2 回答 2

3

您需要使用这种方式:

display: inline;
zoom: 1;

我猜你错过了这个zoom: 1部分。如果您要与适用于所有 IE 版本和现代浏览器的现有样式表耦合,那么最好使用这种方式:

display: inline-block;
*display: inline;
*zoom: 1;

但问题是,您的 CSS 可能无法验证。


没看懂,哪一部分是你没看懂的。让我解释一下我使用的三个东西。

  1. Star Hack:在样式规则前面添加 a *,将使其仅对 IE 7 及以下版本可见。
  2. 验证问题:规则*zoom*display不是有效的 CSS 属性。
  3. 这是如何运作的?在 IE 7 及更低版本中,这zoom: 1;将触发元素的属性,从而hasLayout使其可用于widthheight和。marginpadding
于 2013-02-15T16:26:23.700 回答
0

原来是 IE8 无法识别 HTML5 元素的问题。通过添加 HTML5shiv 我能够修复它。

于 2013-02-15T19:27:27.413 回答