代码之家  ›  专栏  ›  技术社区  ›  Prestaul

仅在ie<7 w/out中使用条件注释计算CSS表达式?

  •  2
  • Prestaul  · 技术社区  · 17 年前

    我已经知道:“不要使用CSS表达式!”我的问题不是我是否应该使用一个表达式,或者是否有其他的选择;我的问题只是: 我可以不使用条件注释而只在版本7之前的IE版本中计算CSS表达式吗?

    我偶尔会使用下划线来隐藏IE7中的规则,但IE7似乎无论如何都要计算表达式。例如, _width:700px; 被IE7忽略,但 _width:expression('700px'); 仍在计算中。

    我知道有人会试图告诉我只使用条件注释来包含规则,但我正在寻找一种方法来实现这一点,而不将单个样式规则放置到单独的文件中。

    对于那些仍然不想放手的人来说,这是一个提示:我选择了使用一个CSS表达式,但我做的并不轻松。我理解其含义,并且我使用的表达式只计算一次。别再担心我的错误决定了,只要回答问题就行了…;-)

    5 回复  |  直到 11 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    我总是使用星型“黑客”专门针对IE6,但它需要你的浏览器 符合标准 模式(见下文)。

    /* IE6 only */   
    * html .myClass {
        width: 500px;
    }
    

    我喜欢它,因为它不依赖于分析浏览器中的不一致性,它根据 W3C .

    至于处于标准兼容模式,您应该始终向页面添加有效的doctype,因为它会减少CSS错误和浏览器特性。有关QuirksMode和标准兼容模式的说明,请查看 article .

    您可以使用下面的示例在每个浏览器中使用表达式。我在FF、IE6和IE7中测试了它,它按预期工作。我只希望So能突出显示语法来识别CSS表达式并将其标记为红色,这样您就可以知道它们是邪恶的。我可以问一下为什么你决定首先使用CSS表达式吗?很多人试图使用它们来实现IE6中的最小宽度,但这不是正确的解决方案。如果你想解决这个问题,我已经写了 an answer in a separate question 在IE6中演示最小宽度的有效CSS解决方案。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <style type="text/css">
    
            .ie6 {
                display: none;
            }
    
            * html .ie6 {
                display: expression("block");
            }
    
            * html .ie7 {
                display: expression("none");
            }
    
        </style>
    </head>
    <body>
    <div class="ie6">
        This is IE6
    </div>
    <div class="ie7">
        This is Firefox or IE7+
    </div>
    </body>
    </html>
    
        2
  •  2
  •   chris5marsh    14 年前

    您不必使用条件注释来添加新文件。您可以轻松地添加条件注释,以便将类添加到 body 标签如下:

    <!--[if lte IE 7]>
    <body class="ie7">
    <![endif]-->
    <!--[if gt IE 7]>-->
    <body>
    <!--<![endif]-->
    

    然后,在您的CSS中,您可以在您喜欢的任何元素上为IE7定义不同的样式:

    #content {
        width:720px;
    }
    
    .ie7 #content {
        width:700px;
    }
    

    您仍然可以加载相同的样式表,但是您可以基于元素的浏览器为其设置样式。

    您甚至可以将其扩展为IE6、7和非IE浏览器的不同样式。

        3
  •  1
  •   Diodeus - James MacFarlane    17 年前

    你可以试试 Rafael Lima's CSS Selector . 它使用JavaScript,但您可以执行以下操作:

    .ie6 .myClass {}
    .ie7 .myClass {}
    .ie .myClass{}
    
        4
  •  1
  •   Dave Anderson    17 年前

    我以前用过!重要的是要使非IE浏览器使用不同的样式,但随后IE7开始支持它。我发现IE7将应用标记的样式!我只是(或什么都不!重要的是)其他浏览器会忽略样式,因为它们不认识到这一点。

    如果你需要三种不同的风格,这可能有效,但不太好的是你要坚持标准。 (通常我不尝试混合!重要的!我只有而且只有!仅I.

    #myDiv {
      height: 3.0em !important; /* non-ie */
      height: 2.6em !ie-only; /* ie7 */
      height: 2.4em; /* ie < 7 */
    }
    
        5
  •  0
  •   Community Mohan Dere    9 年前

    这个答案可能是你想要的: In-line CSS IE hack