CSS在兼容模式下仅适用于IE8(没有IE8没有IE7)?

时间:2012-10-26 08:57:26

标签: css

有没有办法在兼容模式下添加一个仅适用于IE8的css,但是如果IE7或IE8或(显然任何其他浏览器)都没有?

我的CSS很简单

h1 {
   font-size:14px;
}

但必须使用font-size必须仅适用于IE8(兼容模式)

注意: 我知道如何写一个条件语句来发现IE8 ...但我不知道如何为IE8兼容模式做这件事。

5 个答案:

答案 0 :(得分:2)

针对IE8的CSS攻击,如下所示:

h1{font-size:14px\0;}

答案 1 :(得分:1)

不幸的是,没有办法只适用于IE8兼容模式。但是,IE8CM将显示完全相同的IE7,因为它是IE7模拟器。您可以使用类似下面的代码,但它也适用于IE7:

<!--IE9 compatibility mode & IE8:-->
  <!--[if IE 8]>
    <p>Welcome to Internet Explorer 8.</p>
  <![endif]-->

<!--IE8 compatibility mode & IE7:-->
  <!--[if IE 7]>
    <p>Welcome to Internet Explorer 7.</p>
  <![endif]-->

有什么理由不适用于IE7吗?在IE7中也应该需要任何能够解决IE8中的问题兼容模式的黑客攻击。

答案 2 :(得分:0)

您应该在代码中的html标记之前添加以下代码:

<!--if IE 8>
<html class="IE8">
<[endif]-->
<html>
...
</html>

在CSS文件中,执行以下操作:

.IE8 h1{
font-size:14px;
}

这仅适用于IE8。

答案 3 :(得分:0)

使用css hack:

     body{
         color:red;           /*every browser*/
         color:blue\9;        /*IE8 or below*/
     }

答案 4 :(得分:0)

兼容模式,除非修改后的DocType呈现为IE 7或更低版​​本,因此如果它处于兼容模式,它通常也会在IE 7中呈现。

但是,您仍然可以这样做:如果您检查用户代理字符串,则可以通过这种方式区分它。 IE 8和更新版本在用户代理字符串中包含“Trident”一词,因此如果它呈现为IE 7或更低版​​本,但是Trident确实显示在uagent中,那么它必须处于兼容模式。

虽然大多数人都不会发现这一点,但我确实有理由这样做。在我以前的一个项目中,需要告诉人们使用兼容模式选项,直到我们能够修改我们的应用程序来处理新的浏览器。不是每个人都会阅读说明,因此弹出的信息通常是告诉人们该做什么的最佳方式。

我编写并放在文档头部的脚本的这个修改版本可以解决这个问题:

<script language="javascript" type="text/javascript"> 
if (!!navigator.userAgent.match(/MSIE/i)) { 
   ie__mode=' not_ie_compatibility_mode';
(!!navigator.userAgent.match(/Trident/i)&&document.documentMode<8)?ie__mode=' ie_compatibility_mode':''; } 
</script>

那么javascript变量ie_mode将被设置为:“ie_compatibility_mode”或“not_ie_compatibility_mode”

如果你要添加document.documentElement.className + = ie__mode;到脚本,以便将css类添加到文档本身,如下所示:

<script language="javascript" type="text/javascript"> 
if (!!navigator.userAgent.match(/MSIE/i)) { 
   ie__mode=' not_ie_compatibility_mode';
(!!navigator.userAgent.match(/Trident/i)&&document.documentMode<8)?ie__mode=' ie_compatibility_mode':'';
document.documentElement.className+=ie__mode; } 
</script>

然后你就可以在文档中使用css用于任一模式。示例样式:

<style type="text/css">

    html { color:#000000; }

    /* default settings: start with all items 'off' */

    .hide_element { display:none; visibility:hidden; }

    .ie_compatibility_mode .display_compatibility_mode { visibility:visible; display:block; color:#FF9900; }

    .not_ie_compatibility_mode .display_not_compatibility_mode { visibility:visible; display:block; color:#666666; }

</style>

然后在身体中你可以这样做:

<body>

If you are using internet explorer there will be more here: 

<br><br>

<script language="javascript" type="text/javascript"> 
    if (document.documentMode) document.write("which ie mode: "+document.documentElement.className);
</script>

<br><br>

<div class="hide_element display_compatibility_mode">
   This is in compatibility mode. [this should show up in orange]
</div>

<div class="hide_element display_not_compatibility_mode">
   This is not in compatibility mode. [this should be show up in blue]
</div>

</body>

这是完整的工作页面,其中包含所有部分:

<!DOCTYPE html>
<html>
<head>
<title>HTML Class Setting / Detect Compatibility Mode Example - Jeff Clayton</title>

<script language="javascript" type="text/javascript"> 
if (!!navigator.userAgent.match(/MSIE/i)) { 
   ie__mode=' not_ie_compatibility_mode';
(!!navigator.userAgent.match(/Trident/i)&&document.documentMode<8)?ie__mode=' ie_compatibility_mode':'';
document.documentElement.className+=ie__mode; } 
</script>

<style type="text/css">

/* default settings: start with all items 'off' */

.hide_element { display:none; visibility:hidden; }

.ie_compatibility_mode .display_compatibility_mode { visibility:visible; display:block; color:#FF9900; }

.not_ie_compatibility_mode .display_not_compatibility_mode { visibility:visible; display:block; color:#0000FF; }

</style>

</head>

<body>

If you are using internet explorer there will be more here: 

<br><br>

<script language="javascript" type="text/javascript"> 
    if (document.documentMode) document.write("which ie mode: "+document.documentElement.className);
</script>

<br><br>

<div class="hide_element display_compatibility_mode">
   This is in compatibility mode. [this should show up in orange]
</div>

<div class="hide_element display_not_compatibility_mode">
   This is not in compatibility mode. [this should show up in blue]
</div>

</body>
</html>