0

我试图找出是否有针对在 IE 语句中添加的类(例如 lt-ie9、lt-ie8、lt-ie7 等)的所有 css 修复的摘要,如 Paul Irish 网站中显示的代码所示: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]-->
4

3 回答 3

1

很多时候,您不会(或不应该)需要特定于 IE 的类。在当今的网络中,编写特定于特定浏览器或版本的代码被认为是不好的做法;在大多数情况下,最好检测是否支持您需要的功能,而不是检查浏览器本身。

这有很多优点;最主要的是,它使您不必了解所有浏览器功能以及哪些浏览器支持它们。这也意味着,如果有人使用另一个没有给定功能的旧浏览器访问您的网站,您的代码将继续工作。但它也有利于让你的代码在未来更简洁、更容易使用。有一个名为Modernizr的库与您引用的代码执行类似的操作,但会根据浏览器支持的功能添加类。实际上,编写您引用的代码的同一位 Paul Irish 也是 Modernizr 的首席开发人员。

您可以在http://CanIUse.comhttp://QuirksMode.org/css/中查看 IE 对各种版本的各种功能的支持。CanIUse 更适合检查较新的浏览器功能,但 Quirksmode 更适合检查基本 CSS 功能,因为它具有更细粒度的细节。

旧 IE 版本中缺少的许多功能可以通过“polyfill”脚本实现。例如, http: //CSS3Pie.com/是一个脚本,它border-radius为旧 IE 版本添加了对 、CSS 渐变和其他功能的支持。很多时候最好让浏览器做它的事情并忽略缺失的功能(例如圆角很好,但如果它们缺失,网站不会停止工作),但如果你发现自己需要某些功能并且您绝对必须在所有浏览器中支持它们,这里有一个很好的 polyfill 脚本列表,您可以尝试(顺便说一下,该列表由 Modernizr 提供,因此它们应该都能很好地使用它)。

因此,对于旧 IE 版本中缺少的功能,您不应该需要特定于 IE 的类。

唯一可能需要特定于 IE 的类是用于处理浏览器错误。

没有所有已知 IE 错误的明确列表(反正我不知道),但是网络上有很多网站提供了它们的详细信息以及如何处理它们。

首先,确保 IE 以标准模式呈现页面。如果您处于怪癖模式或兼容模式,您可能会遇到问题。特别是避免怪异模式将摆脱最糟糕的布局怪异,这在历史上给 IE 带来了坏名声。

如果您不幸需要支持 IE6,您将需要了解它存在的各种错误以及如何解决这些错误。其中有很多,并且能够隔离这些错误修复,以便它们仅适用于受影响的 IE 版本,这很重要,因此您的 IE 类将派上用场。

更高版本的 IE 有更少的错误;IE8 的表现相对较好,坦率地说,通常不需要太多浏览器特定的错误修复。IE7 仍然有问题,而 IE6 实在是太可怕了。这里的关键是知道您何时遇到特定错误,并相应地发布 CSS 修复程序。

为此,您第二个问题的答案是:是的,您只需要测试、测试、测试,当您在任何版本的 IE 中看到奇怪的东西时,您需要对其进行调查,找出原因,如果这是一个错误,请酌情处理。

于 2013-09-08T13:58:12.017 回答
0

是的,在每个浏览器中测试,然后添加任何需要的东西。

于 2013-09-08T13:02:49.717 回答
0

有一项服务,可以帮助您查看 css 功能支持。

http://caniuse.com/

所以你可以看到哪些代码在较低的浏览器版本中会造成困难。

于 2013-09-08T13:14:50.763 回答