IE8 CSS选择器

45
为了只针对IE浏览器中的元素,我将使用以下代码:

IE6:

* html #nav li ul {
    left: -39px !important;
    border: 1px solid red;
}

IE7:

*+html #nav li ul  {
    left: -39px! important;
}

有人知道如何针对IE8进行定位吗?


20
嘿,它通过了ACID2测试,那你还需要什么IE8的hack呢?(只是开个玩笑……) - Boldewyn
5
下划线在属性前(div {_display:none;})适用于IE6,星号在属性前(div {*display:none;})适用于IE7。 - Dirk Diggler
14个回答

3

我知道这是一个老问题,但当我搜索时,它是谷歌的第一个结果。我认为我找到了比排名最高的建议和OP选择做什么更好的解决方案。

#nav li ul:not(.stupidIE) { color:red }

从技术上讲,这与 OP 所需的相反,但这意味着您必须先为 IE8 应用所需的规则,然后再应用其他内容。当然,只要它是有效的 CSS,不会实际选择任何内容,您可以在()中放置任何内容。IE8 在此行上崩溃并且不适用它,但以前的 IE(好吧,我只检查了 IE7,我已经不再关心 IE6),只忽略 :not() 并应用声明。当然,每个其他浏览器(我测试了 Safari 5、Opera 10.5 和 Firefox 3.6)都按照您预期的方式应用该 CSS。

因此,我想这个解决方案和任何其他纯 CSS 解决方案一样,假定如果 IE 开发人员添加对 :not 选择器的支持,那么他们也将修复导致您针对 IE8 的任何差异。


2

好的,所以这并不是CSS hack,而是由于无法找到从CSS中针对ie8的方法以及不允许使用ie特定CSS文件的政策,我不得不采取以下措施。我认为其他人也可能会发现这很有用:

if (jQuery.browser.version==8.0) {
   $(results).css({
         'left':'23px',
         'top':'-253px'
      });
}

1

\9不适用于,您需要使用“\0/ !important”,如Chris所述,例如:

p { font-family: Arial \0/ !important; }

0

IE8没有任何选择器黑客技巧。这个问题的最佳资源是http://browserhacks.com/#ie

如果你想针对特定的IE8进行目标定位,应该在HTML中进行注释。

<!--[if IE 8]> Internet Explorer 8 <![endif]-->

或者你可以使用属性黑科技,如下:

/* IE6, IE7, IE8, but also IE9 in some cases :( */
#diecinueve { color: blue\9; }

/* IE7, IE8 */
#veinte { color/*\**/: blue\9; }

/* IE8, IE9 */
#anotherone  {color: blue\0/;} /* must go at the END of all rules */

想要了解更多关于这个的信息,请参考:http://www.paulirish.com/2009/browser-specific-css-hacks/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接