我对CSS编码实践有疑问。 IE通常需要黑客或变通方法来使事情看起来正确,并且有两种不同的做法:
我认为第二个更有意义,但有没有理由不这样做?哪个更常见?
答案 0 :(得分:2)
针对两个CSS文件的唯一参数是,在首次打开页面时,它将生成一个额外的HTTP请求。
但是,一旦使用这些文件的本地副本填充浏览器缓存,就会删除此问题。
另一方面,单独使用IE样式意味着其他浏览器上的用户不会加载它们。此外,主要样式和黑客之间有明显的区别,这意味着随着IE9的采用,您可以通过删除该文件而不是修改主CSS文件来轻松地弃用乱砍CSS。
答案 1 :(得分:2)
My Preference作为所有项目的标准是使用一个CSS文件,以便以后更容易管理和修改(也只有一个HTTP请求)。然后使用条件来改变身体类别。
<!--[if lt IE 7 ]> <body class="ie6"> <![endif]-->
<!--[if IE 7 ]> <body class="ie7"> <![endif]-->
<!--[if IE 8 ]> <body class="ie8"> <![endif]-->
<!--[if IE 9 ]> <body class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <body> <!--<![endif]-->
不确定这是多么常见,但它也在HTML5Boilerplate
中使用答案 2 :(得分:1)
我认为没有理由不做第二次。像<!--[if IE]>
这样的表达式值得确保加载正确的css并在使用非浏览器时节省带宽。
答案 3 :(得分:1)
可以为单个样式表做出的唯一参数是减少一个HTTP请求。鉴于平均而言,60%的网络流量将来自IE用户,这并不是一个微不足道的影响。
然而,像Holly Hack这样的黑客只是简单的丑陋并且无法保证工作,并且由于样式表被缓存,因此影响不应该像它那样重要。条件注释是可接受的做法,应该用于解决IE问题。没有理由为标准兼容和非标准投诉浏览器加载两个完全独立的样式表 - 覆盖少数有问题的属性就足够了。
或者,Javascript解决方案(如IE7.js)也可用于相同的效果。
答案 4 :(得分:1)
我使用其中之一,它只取决于在IE中使页面看起来需要多少更改。
如果这是一个小变化,就像元素需要在IE中使用500px而不是480px而不是我在样式表中使用变通方法。
但是如果有很多变化我会使用条件注释加载一个单独的样式表,如果它是IE - 但有了这个我没有相同样式表的两个副本,一个编码为其他浏览器,一个编码为IE,我有它总是加载我的主样式表,然后在需要时加载IE样式表并仅更改它所需的元素(因此在样式表中没有必要的重复项来减少文件大小)
基本上,我是怎么做的:
需要改变一些要素:坚持使用变通方法
许多元素需要改变:使用条件评论
答案 5 :(得分:0)
如果没有浏览器“hacks”,你可能能够正常工作。
尽可能避免使用特定于浏览器的CSS。对于旧版本的IE,我更喜欢使用条件注释<--[if IE...]> ... <[endif]-->
。
我知道他们向服务器创建了另一个请求,但我的观点是,任何愚蠢到使用过期版本ie(6或更少)的人都不值得花几毫秒来下载其他样式表。这也允许我集中修复。
首先使用符合标准的代码,然后针对不兼容的浏览器修复任何问题,但仅限于绝对必要时。
答案 6 :(得分:0)
放入IE CSS文件,只需要修复IE上的布局,而不是一个全新的(也许是重复的)样式表。
我也推荐这个用于导入javascript,就像一个快速的脚本来使HTML5元素工作(我在Remy Sharp的样本上看到了这个问题,如果我没错的话)。