我试图找出IE语句中添加的类(例如lt-ie9,lt-ie8,lt-ie7等)的所有css修复的摘要,如Paul中所示的代码爱尔兰网站:http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/
如果没有这样的摘要,我是否在实际测试浏览器后修复了css问题(并添加了我在书籍/在线中遇到的那些修复)?
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if gt IE 8]><!--> <html class=""> <!--<![endif]-->
答案 0 :(得分:1)
很多时候,你不会(或不应该)需要IE特定的类。编写特定于特定浏览器或版本的代码在当今的Web中被认为是不好的做法;在大多数情况下,最好检测是否支持您需要的功能,而不是检查浏览器本身。
这有许多优点;主要的一点是,它使您不必了解所有浏览器功能以及哪些浏览器支持它们。这也意味着如果有人使用另一个没有给定功能的旧浏览器访问您的网站,您的代码将继续有效。但它也有利于使您的代码更清洁,更容易在将来使用。有一个名为Modernizr的库与您引用的代码类似,但根据浏览器支持的功能添加类。实际上,编写您引用的代码的Paul Irish也是Modernizr的首席开发人员。
您可以在http://CanIUse.com或http://QuirksMode.org/css/中查看IE对各种版本的各种功能的支持。 CanIUse更适合检查更新的浏览器功能,但Quirksmode更适合检查基本的CSS功能,因为它具有更精细的细节。
旧版IE中缺少的许多功能都可以通过“polyfill”脚本实现。例如,http://CSS3Pie.com/是一个脚本,它为旧的IE版本添加了对border-radius
,CSS渐变和其他功能的支持。很多时候最好只是让浏览器做它的事情并忽略缺少的功能(例如圆角很好,但如果它们丢失,网站将不会停止工作),但如果你发现自己需要某些功能并且你必须在所有浏览器中支持它们,你可以尝试一个很好的list of polyfill scripts here(顺便提一下,这个列表是由Modernizr提供的,所以它们应该都可以很好地工作)。
因此,对于旧IE版本中缺少的功能,您不应该需要特定于IE的类。
您可能需要IE特定类的唯一时间是处理浏览器错误。
没有明确列出所有已知IE漏洞的列表(不是我知道的),但网上有很多网站提供了详细信息以及如何处理它们。
首先,确保IE以标准模式呈现页面。如果您处于怪异模式或兼容模式,则可能会出现问题。特别是避免怪癖模式将摆脱历史上给IE带来坏名声的最糟糕的布局怪异。
如果您处于需要支持IE6的不幸位置,您将需要了解它所具有的各种错误以及如何解决它们。它们中有很多,并且能够分离这些错误修复,因此它们只适用于受影响的IE版本非常重要,因此您的IE类将派上用场。
IE的后续版本有更少的错误; IE8的表现相对较好,坦率地说,浏览器特定的bug修复通常不需要太多。虽然IE7仍然存在问题,IE6也很糟糕。这里的关键是知道你何时遇到特定的bug,并相应地发布CSS修复。
为此,你的第二个问题的答案是:是的,你只需要测试,测试,测试,当你看到任何版本的IE中的东西很奇怪时,你需要调查它,找出原因如果这是一个错误,请在适当的时候处理它。
答案 1 :(得分:0)
是的,在每个浏览器中进行测试,然后添加所需的任何内容。
答案 2 :(得分:0)