一尘不染

如何在样式表中仅定位IE(​​任何版本)?

css

我有一个继承的项目,并且在某些地方一团糟。这就是其中之一。我只需要定位IE(​​任何版本)。

#nav li {
    float: left;
    height: 54px;
    background: #4f5151;
    display: table;
    border-left: 1px solid grey;
}

需要说明的是: 嵌入式样式表中,并且 没有 在HTML的标签中添加ID或类,而 在用户使用IE 时才
需要应用边框样式。我怎样才能做到这一点?

编辑:找到了Firefox的解决方案,编辑问题来反映这一点。


阅读 497

收藏
2020-05-16

共1个答案

一尘不染

Internet Explorer 9及更低版本:
您可以使用条件注释为要专门定位的任何版本(或版本组合)加载IE特定的样式表,例如下面使用外部样式表的样式表。

<!--[if IE]>
  <link rel="stylesheet" type="text/css" href="all-ie-only.css" />
<![endif]-->

但是,从版本10开始,IE中不再支持条件注释。

Internet Explorer 10和11: 使用-ms-high-contrast创建媒体查询,在其中放置IE
10和11特定的CSS样式。由于-ms-high-contrast是特定于Microsoft的(并且仅在IE 10+中可用),因此只能在Internet
Explorer 10及更高版本中进行解析。

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
     /* IE10+ CSS styles go here */
}

Microsoft Edge 12: 可以使用@supports规则

@supports (-ms-accelerator:true) {
  /* IE Edge 12+ CSS styles go here */ 
}

内联规则IE8检测

我还有1个选项,但它只能检测IE8及以下版本。

  /* For IE css hack */
  margin-top: 10px\9 /* apply to all ie from 8 and below */
  *margin-top:10px;  /* apply to ie 7 and below */
  _margin-top:10px; /* apply to ie 6 and below */

如您所指定的嵌入样式表。我认为您需要针对以下版本使用媒体查询和条件注释。

2020-05-16