2011-09-06 64 views
19

由于IE正在摆脱版本10中的条件注释,所以我急需找到一个专门针对IE10的“CSS黑客”。请注意,它必须是选择器这是“黑客”,而不是CSS属性。是否有针对IE10的特定CSS选择器?

在Mozilla中,你可以使用:

@-moz-document url-prefix() { 
    h1 { 
    color: red; 
    } 
} 

而在Webkit的,你通常会做:

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    h1 { 
    color: blue; 
    } 
} 

我会怎么做在IE10类似的东西?

+0

我只是使用IE条件评论。此外,我的朋友或家人甚至都不了解IE 10。 –

+7

IE10可能符合标准,不需要任何黑客。而泰勒,这个问题表示它不支持有条件的评论。 – BoltClock

+2

@BoltClock不幸的是,即使在符合标准的Web浏览器(Webkit/Firefox/Opera)中也存在一些奇怪的变体,因此当试图在所有浏览器中创建像素完美体验时,像-moz-document这样的选择器确实有所帮助。尽管我非常喜欢允许浏览器为用户显示不同的体验,但我的客户却没有。 – kunambi

回答

33

下面的示例演示如何做到这一点

/* 
#ie10 will only be red in MSIE 10, 
both in high contrast (display setting) and default mode 
*/ 
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 
    #ie10 { color: red; } 
} 

警告:可能会在IE11 +工作了。

+0

感谢您的意见,我接受了这个答案。它会瞄准IE11是否我认为我们不应该担心,一段时间:-) – kunambi

+5

这是危险的想法。即使IE11出现很长一段时间,这意味着代码在你的头脑中将不再新鲜,也许难以修复。此外,没有人真正知道何时下一个版本的IE会出现,或者您正在解决的错误将被修复。我只会使用这样的黑客来解决bug,如果这个bug在更高的版本中得到修复,那么这个黑客就不会破坏。 –

+1

刚试过使用这种方法。只适用于开发环境,不适用于生产环境。 – agassi0430

3

据我所知,没有这样的CSS选择器存在。如果你想专门针对IE10,为什么不写一点javascript来设置一个名为ie10的元素body,然后为IE10创建一个特定的样式?

2

我不确定这是否适合您的选择符vs属性要求,但我想出了以下方法,同时试图在IE7-9中伪造text-shadow,然后关闭IE10中的黑客。关键是在IE10中使用新的-ms-animation东西。

.header { 
    /* For browsers that support it to add a little more punch to a @font-face */ 
    text-shadow: rgba(100, 100, 100, 0.5) 0 0 2px; 

    /* Make IE7-9 do faux bold instead and then turn down the opacity to match */ 
    *font-weight: bold; 
    font-weight: bold\9; 
    *filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=75); 
    opacity: 0.75\9; 

    /* Uh oh! We've also caught IE10 in our above hack */ 

    /* But IE10 supports CSS3 animations. Will a high duration keep CPU usage down? */ 
    -ms-animation: text-shadow 60s infinite; 
} 

/* Define the animation */ 
@-ms-keyframes text-shadow { 
    0%, 100% { 
     font-weight: normal; 
     opacity: 1; 
    } 
} 
+6

这显然是一个疯子的工作! –

5

使用http://rafael.adm.br/css_browser_selector/的css浏览器选择器,您可以在代码中添加一个简单的+并从您的CSS中调出IE10。

查找/msie\s(\d)/并将其更改为/msie\s(\d+)/

现在,在你的CSS你选择之前,只需添加.ie10像这样:

.ie10 .class-name { width: 100px; }
.class-name { width: 90px; }

您现在应该看到IE10渲染100px的宽度和所有其他浏览器呈现90像素的宽度。

相关问题