如何在 CSS 中检测 IE 和 Edge 浏览器?

Posted

技术标签:

【中文标题】如何在 CSS 中检测 IE 和 Edge 浏览器?【英文标题】:how to detect IE and Edge browsers in CSS? 【发布时间】:2017-09-17 15:26:42 【问题描述】:

是否有标准的方法来检测 css 中的 IE 和 Edge 浏览器?我看到了在 javascript 文件中检测的响应,但我正在 css 中寻找一个

【问题讨论】:

***.com/questions/32201586/…的可能重复 【参考方案1】:

对于 IE 9 及更低版本,加载条件样式表:

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

IE 10 及更高版本不支持此功能,因此您必须使用媒体查询:

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) 
   /* IE10+ CSS */

对于边缘 12-15:

@supports (-ms-accelerator:true) 
   /* Edge 12+ CSS */ 

编辑

适用于 Edge 16+

@supports (-ms-ime-align:auto) 
    /* Edge 16+ CSS */ 

【讨论】:

假设我要检测是IE还是Edge,那么backgournd不应该被修复,我该怎么办? 你必须发布你的代码并解释你想要做什么。 禁用 IE 和 Edge 的破碎视差 谢谢,我可以再问一个问题吗? -ms-accelerator 和 -ms-ime-align:auto 有什么区别?我刚刚看到有人对 Edge 也提到了这一点。谢谢 两者都是简单的 CSS hack。基本上,您通过“嗅探”来检查浏览器是否支持特定功能。本例中ms-accelerator是edge支持的硬件加速器,ms-align-auto对齐输入法编辑器。他们所做的与你的情况无关。关键是您可以使用它们来嗅探浏览器并应用条件 CSS。不过我离题了,这可能是暂时的。随着新浏览器版本和功能的发布,您将需要更新这些“黑客”。 Javascript 特征检测是最好的方法。谷歌一下。【参考方案2】:

Edge 的公认答案在 Edge 16 中不起作用。

这种替代方法有效:

@supports (-ms-ime-align:auto) 
    /* IE Edge 16+ CSS */ 

通过https://***.com/a/32202953

(添加新答案,因为我没有评论权限。)

【讨论】:

谢谢您,我已将其添加到接受的答案中【参考方案3】:

不确定边缘,但可以使用 10/11 的目标:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) 
  //styles

【讨论】:

【参考方案4】:

用于支持边缘 12+ 和 16+ 作为一个衬垫

@supports (-ms-accelerator:true) or (-ms-ime-align:auto) 
     // your css here

【讨论】:

【参考方案5】:

一体化:

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active),
@supports (-ms-accelerator:true) or (-ms-ime-align:auto) 
    /* All CSS is here */
    .example 
        /* ... */
    

【讨论】:

对于样式类 .example,在 Internet Explorer 10/11 和 Edge 12+ 中应用所需的样式。

以上是关于如何在 CSS 中检测 IE 和 Edge 浏览器?的主要内容,如果未能解决你的问题,请参考以下文章

为啥新版IE和Edge不支持CSS滤镜效果?

IE和Edge中的范围滑块拇指css问题

IE 和 Edge 修复对象匹配:cover;

如何使用 JavaScript 检测 Internet Explorer (IE) 和 Microsoft Edge?

.append 的 CSS 不会影响 IE/Edge 中的 iframe

win10的IE和Edge浏览器都打不开网页,火狐却可以,其他网络功能正常