我一直在寻找解释为什么 HTML5 Boilerplate 中 IE 的 html 标记条件的这一部分有这部分:
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
我问只是为了让我了解这是如何工作的。我理解上面的条件句,但是为什么这个和上面的不一样呢?与上述情况相比,我不明白这种情况在做什么。
提前感谢您帮助我理解我将使用的东西。
我一直在寻找解释为什么 HTML5 Boilerplate 中 IE 的 html 标记条件的这一部分有这部分:
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
我问只是为了让我了解这是如何工作的。我理解上面的条件句,但是为什么这个和上面的不一样呢?与上述情况相比,我不明白这种情况在做什么。
提前感谢您帮助我理解我将使用的东西。
基本上,最后一部分用于 IE 版本 9 及更高版本,以及所有其他浏览器。但是,由于 HTML Boilerplate 非常关注优化,因此语法更短且不那么直接。
我找到了解释它的文章,我建议你阅读全文:
http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/
这是我提出的解决方案:
<!--[if lt IE 7]> <html class="ie6"> <![endif]--> <!--[if IE 7]> <html class="ie7"> <![endif]--> <!--[if IE 8]> <html class="ie8"> <![endif]--> <!--[if gt IE 8]><!--> <html> <!--<![endif]-->
由于您可以在文章中阅读到的问题,这实际上是在之后更新的。
显然,奇怪的语法的一部分与 Dreamweaver(!) 错误有关。这是一段摘录:
这是新的推荐,也是 HTML5 Boilerplate 中使用的推荐。
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
基本上,最后一行是说“如果 IE9+ 或不是 IE,请执行此操作”。下面的一些要点与您的问题没有直接关系,但无论如何我都会将它们包括在内。
为什么?
- 这修复了 Stoyan Stefanov 和 Markus Leptien 发现的文件阻塞问题。
- 它避免了也解决了上述问题的空注释。
- 像 WordPress 和 Drupal 这样的 CMS 更多地使用 body 类。
- 这使得在那里集成更简单它在 html4 中没有验证,但在 html5 中很好。处理它。
- 它与一种基于您的标记启动特定于页面的 javascript 的技术很好地配合使用。
- 它使用与 Modernizr(和 Dojo)相同的元素。那感觉不错。
- 我在那里留下了一个空班,因为你可能会在那里放一个 no-js 或其他东西。如果没有,请删除。
- 此外,如果最后一个标签周围的额外注释对您来说很奇怪,请归咎于 Dreamweaver,它会阻塞正常的 !IE 条件注释。
更多关于这个问题的讨论在这里:https ://github.com/h5bp/html5-boilerplate/issues/425/#