HTML5 Boilerplate +条件评论

时间:2011-11-10 12:31:47

标签: html5 boilerplate conditional-comments selectivizr

我正在使用HTML5 Boilerplate,直到现在,当我开始使用Selectivizr时,它一直没有问题。由于某些原因,我不明白,IE8产生了一个Javascript错误。

经过一些测试,我注意到当我停止使用条件浏览器注释(在Boilerplate中)时,如果根据您使用的浏览器将类添加到html,则错误消失了:

<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

正如我所说,当我删除上面的代码并将其替换为<html>时,一切正常。

由于我不想完全删除条件注释(它们帮助我编写浏览器特定的css),我想做同样的事情,但不是将它应用于html我将为{<body>做1}}:

<!--[if lt IE 7]> <body class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]>    <body class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]>    <body class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <body class="no-js" lang="en"> <!--<![endif]-->

一切似乎都运转正常,但由于我是新手,我只想验证这个解决方法是否合适?还是有缺点?

另外还有一个问题:当用户使用Firefox或Chrome访问该网站时,body会被“使用”什么?我想它会在没有课程的情况下“使用”body吗?

我的逻辑会告诉我写另一个条件评论,以确保“使用”body用于所有其他浏览器,但是在官方Boilerplate模板中不存在这样的评论,因此我猜它不需要..为什么不呢?

1 个答案:

答案 0 :(得分:3)

我们实际上最初是在<body&gt;标签。 :)

我们移动他们有两个小原因:

  • IE6中的多个类名错误
  • CMS使用body元素作为自己的类。

您可以将课程移至<body>,而不会出现太多问题。您也可以将lang=en留在HTML元素上,进行清理。

更多deets:https://github.com/h5bp/html5-boilerplate/issues/44