小编典典

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

all

我有一个继承的项目,有些地方一团糟。这是其中之一。我只需要针对 IE(任何版本)。

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

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

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


阅读 72

收藏
2022-06-11

共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 */

正如您为嵌入样式表指定的那样。我认为您需要对以下版本使用媒体查询和条件评论。

2022-06-11