我正在试图找出目前最适合我的解决方案。
我使用CSS3制作一些圆角和阴影,但IE8不支持它,所以我不得不使用CSS3pie for IE8。不幸的是,在应用馅饼之后,似乎IE8只是不希望看起来像Chrome或FF一样。为什么IE这么麻烦?
我应该为IE创建一个新的样式表吗?还是有更好的解决方案?是否有某种生成器可以将Firefox完善的CSS转换为IE?
答案 0 :(得分:4)
我应该创建一个新的样式表吗? 对于IE?
是的,我认为您必须为IE添加单独的CSS,例如
<!--[if IE 8]><link rel="stylesheet" type="text/css" href="../CSS/ie8.css" media="screen" /><![endif]-->
如果它在IE8中看起来不正确,那么它在IE6中一定会更糟! :)
为什么IE这么麻烦?
因为IE人员对网络标准的关注度不高,尽管情况有所改善。
答案 1 :(得分:3)
对于IE,是的,正如@Joe R所说,它们是通过条件评论包含的。因此,至少没有提供特定支持的标记的损坏或无效,这是一种比以前用于各种css hacks的情况要好得多的改进。
在我的情况下,我也是,只要没有相反的明显限制,在页面的某处包含一个条件评论,弹出一个模式对话链接到各种其他免费浏览器(通常是Chrome,Firefox,Safari和Opera)并建议用户可能希望升级,以改善他们的体验。
顺便说一句,我也不打扰试图获得像素完美的IE版本。如果一个客户要求它,那么公平,但通常解释每小时的成本只是为了givie弯曲的角落足以鼓励IE中的矩形框,以及FF,Chrome等曲线。
IE看起来如此痛苦的主要原因是因为,在Windows上作为免费浏览器安装IE后,它的市场渗透率达到了90%左右,Netscape或多或少地死了,而且还有利基浏览器周围,大多数Windows市场似乎对追求替代品毫无兴趣。缺乏高市场渗透率和低水平的竞争阻碍了市场,并降低了创新和改进的动力。
仅此以后,我认为,Firefox开始达到15%的采用率+ IE团队或IE管理团队是否注意并追求改进。即便如此,似乎已经采用了IE9开发流程来推动标准的采用。
答案 2 :(得分:1)
保罗爱尔兰人不久前给了IE特定风格nice solution。
基本上,它使用条件语句为您的body
个不同的类提供。这样您就可以通过执行以下操作来设置IE特定样式:
.ie6 #element{ /* styles */ }
答案 3 :(得分:1)
AFAIK您无法强制浏览器与其他浏览器兼容。所以,是的,你可以为IE添加一个单独的样式表。
或您可以使用modernizr并为其他浏览器不支持的每个属性提供替代方案。这样,您可以使用单个css文件为多个浏览器提供服务。当然,如果用户在浏览器上禁用JavaScript,此解决方案将无效。
答案 4 :(得分:1)
除了CSS3Pie(您已经知道很棒)之外,您还应该尝试modernizr
,这样可以更轻松地针对不同的浏览器功能调整样式表。
另外,我经常提到browser compatibility charts Quirksmode.org。非常有用,可以在各种浏览器中查看CSS(和其他浏览器功能)不受支持或错误。
答案 5 :(得分:0)
如果这仅仅是关于CSS3PIE(behavior:
)所需的属性,那么使用单个CSS文件应该不是问题(我个人经常这样做),因为其他浏览器会忽略该属性
如果有的话,你会在申请IE特定的CSS文件和主要文件时获得更多的开销,并且对于IE来说,拥有一个完全不同的CSS文件将是一个噩梦,因为你做的每一次改变,你都必须做两次。我的两分钱是用一个文件。
作为旁注,我的CSS3PIE布局在所有浏览器中看起来都一样,所以也许你的问题来自你正在使用的其他属性,而不是来自CSS3PIE本身?也许有必要提出一个更具体的问题,关于什么被打破,让SO有一个裂缝。
答案 6 :(得分:0)
最好避免多个css包含,因为这样你会分叉css代码,这可能会引发一些明显的manteinance问题(并且由于多个服务器请求而导致性能降低)。
如果你真的需要不同的css代码我首先建议使用严格的doctype(没有XML序言或HTML5的xhtml1.0),如果你仍然有浏览器差异,我建议使用html5样板方法
<!--[if lt IE 7 ]> <body class="ie6 ie"> <![endif]-->
<!--[if IE 7 ]> <body class="ie7 ie"> <![endif]-->
<!--[if IE 8 ]> <body class="ie8 ie"> <![endif]-->
<!--[if IE 9 ]> <body class="ie9 ie"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <body> <!--<![endif]-->
基本上你可以通过预先设置一个类选择器
来定位特定的IE规则