IE浏览器的不同css

时间:2014-02-18 09:17:38

标签: html css internet-explorer conditional-comments

我只需要为IE运行一些css而不是其他浏览器。 我正在使用条件评论:

<!--[if lt IE 7 ]><html class="ie6 ie"> <![endif]-->
<!--[if IE 7 ]><html class="ie7 ie"> <![endif]-->
<!--[if IE 8 ]><html class="ie8 ie"> <![endif]-->
<!--[if gte IE 9]><html class="ie"> <![endif]-->
<!--[!(IE)]><!--><html class="no-ie"> <!--<![endif]-->

但是这段代码不能用于IE11并且阅读这篇文章http://reference.sitepoint.com/css/conditionalcomments我发现早期的版本不再有条件评论了。

然后我尝试用这个改变第4行

<!--[if gte IE 9]><!--><html class="ie"> <!--<![endif]-->

但是我也可以在ie浏览器中看到ie类。

有区分IE和其他浏览器的智能方法吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

通常,您不应该尝试检测用户是否在IE11上。对于大多数用例,IE的最新版本通常与其他浏览器(在HTML,CSS和JS支持方面)相当。

然而,即使是微软也承认,在极少数情况下,您可能需要对其进行唯一识别。为此,他们建议查询用户代理字符串。请参阅http://msdn.microsoft.com/en-us/library/ie/hh869301%28v=vs.85%29.aspxhttp://msdn.microsoft.com/en-us/library/ie/ms537503%28v=vs.85%29.aspx

答案 1 :(得分:2)

答案

您可以使用Javascript来阅读window.navigator属性,并从结果字符串中获取userAgent,如下所示:

var agent = window.navigator.userAgent;

if ( agent.indexOf('Trident') > -1 )
  document.querySelector('body').classList.add('ie-css');

Demo Here

如果您需要版本

您可以使用UA Parser JS获取包含所有详细信息的精美对象。这将是比上述更“安全”的方法,但您也必须包括库:

var parser = new UAParser(),
browser = parser.getBrowser();

console.log( browser.name, browser.major );  // -> "IE 10.0"

Demo Here

注意

您可能已经意识到这一点,但使用浏览器嗅探是一项古老而糟糕的技术。它会很快导致遗留和无法管理的代码。 尝试并避免检测IE的版本

改为使用feature detection

答案 2 :(得分:0)

您不应该区分较新版本的IE和其他浏览器。 IE现在是一款经过改进的产品,与Chrome或Firefox一样符合网络标准。

条件注释仅用于IE 9及以下版本。

如果您需要检测某些特定内容,则可以使用特征检测。这可以用于所有浏览器。

查看Modernizr