2012-03-14 11 views
0

在我的智慧结束在这里。试图实现两个不同的样式表,一个用于IE,另一个用于非IE。在我见过的每一个例子中,这都是你应该这样做的方式。任何人都可以在这发现任何错误?看起来应该很简单。使用两个条件的CSS if语句既不使用样式表

<!--[if !IE]><link rel='stylesheet' type='text/css' href='/login/css/correctlogin.css'/><![endif]--> 
<!--[if IE]><link rel='stylesheet' type='text/css' href='/login/css/ielogin.css'/><![endif]--> 
+0

难道不工作? – CoffeeRain 2012-03-14 20:26:24

+0

请看标题。 – buddyp450 2012-03-14 20:27:32

+0

它是怎么发生的?这两种样式表仅针对IE浏览器显示吗?不要显示IE浏览器?所有的浏览器都显示两种样式表吗? – dangerChihuahua007 2012-03-14 20:28:04

回答

4

对于!IE条件注释,正确的格式是<!--[IF !IE]>--> ... <!-- <![endif]-->,因为非IE浏览器不具备条件的意见进行特殊处理。

<!--[if !IE]> --><link rel='stylesheet' type='text/css' href='/login/css/correctlogin.css'/><!-- <![endif]--> 
<!--[if IE]><link rel='stylesheet' type='text/css' href='/login/css/ielogin.css'/><![endif]--> 

参见:http://www.quirksmode.org/css/condcom.html
PS。条件注释在IE10中不再受支持。

+0

感谢您对IE10的评论,我还没有意识到这一点(我还没有看过IE10)。 – ScottS 2012-03-14 21:34:10

2

如果不是IE语句是多余的。所有你需要的是一个如果IE语句。

<link rel='stylesheet' type='text/css' href='/login/css/correctlogin.css'/> 
<!--[if IE]> 
<link rel='stylesheet' type='text/css' href='/login/css/ielogin.css'/> 
<![endif]--> 

这告诉每一个浏览器使用correctlogin.css,如果浏览器是IE,然后还要使用ielogin.css

+1

这可能是更好的解决方案,因为两个样式表中的大部分代码都应该匹配。 'ielogin.css'应该只有IE特定的更正。 – zim2411 2012-03-14 20:31:46

+0

这有点偏离主题,但我的一个更正是背景图像的_removal_。在这种情况下,我实际上不需要使用原始样式表属性。 – buddyp450 2012-03-14 20:40:56

+1

@ buddyp450 ...为什么?只需在IE样式表中设置'background-image:none;'即可。 – Scott 2012-03-14 20:42:12