<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->这个代码行和其他类似的IE代码行在HTML5文档中意味着什么?http://css-tricks.com/how-to-create-an-ie-only-stylesheet/发布于 2013-09-13 13:43:03
<!--和-->。IE有识别此注释的特殊代码,并将注释中的内容作为常规HTML使用。针对上面粘贴的代码,IE条件语句将类ie6应用于HTML。通过这种方式,您可以只为某些元素提供IE,方法是在css选择器中首先引用该类。例如,只有在存在.ie6 #header {}类的情况下,IE6才会应用于标头,而且由于有条件语句,该类只会出现在IE6中。<!-- [if IE 8]><html class="ie ie8" lang="en"><![endif]-->发布于 2013-09-13 13:47:37
您在问题中讨论的所有示例都旨在检测浏览器是否是IE (以及IE版本),然后尝试从那里处理它。
请注意,这是而不是认为的最佳实践。
如果您需要处理浏览器的差异和缺少的特性,那么处理它的最好方法是使用一种称为功能检测的技术,而不是使用浏览器检测。
我推荐的是查找一个名为现代派的库。几乎可以肯定,这是一个比你问题中的任何想法都更好的起点。
为了修复特定的浏览器特性,现代派团队还提供了一个名为"polyfills“的附加库列表。找出您需要支持的特性,并在列表中查找能够满足您需要的多填充脚本。其中一些是通过现代化加载的,而另一些则可以自己运行。
我会避免做任何浏览器或版本检测,除非这绝对是最后的手段。
在使用复合填充时,要记住一件事:在较旧的IE版本中缺少许多浏览器功能。还有一些多填充脚本将帮助您实现其中的大多数。不过,请不要认为你可以简单地包含每一个多边形填充,并将旧的IE版本变成一个更现代的浏览器。
简单的事实是,旧的IE版本又老又慢。加入多填充会使它们变慢。您应该仔细考虑每个特性,并决定是否真的有必要填充它。如果没有它,这个网站还能使用吗?在许多情况下,让旧浏览器在没有特定功能的情况下工作会更好。
发布于 2013-09-13 13:41:28
正如@FDL所指出的,如果您有适当数量的样式来应用不同版本的IE,请使用条件样式表。
为了进行最小的定位调整,我使用html类(如ie8或ie9),并将修改放到我的主样式表中。
例如:
.filter-bar .item { float: left; vertical-align: top; }
.ie8 .filter-bar .item { position: relative; top: 2px; } /* fix a gap in IE8 */https://stackoverflow.com/questions/18787602
复制相似问题