HTML5样板文件+条件注释



我正在使用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>:

<!--[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模板中没有这样的注释存在,因此我想它不需要…为什么不呢?

我们实际上最初在<body>标签上有它们。:)

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

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

您可以将类移动到<body>,没有太多问题。您也可以将lang=en保留在HTML元素上,以清理内容。

更多细节在这里:https://github.com/h5bp/html5-boilerplate/issues/44

相关内容

  • 没有找到相关文章

最新更新