HTML5 Boilerplate + условные комментарии

Я использую HTML5 Boilerplate и никогда не имел проблем с ним до сих пор, когда я начал использовать http://selectivizr.com/. По какой-то причине, которую я не понимаю, 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 такого комментария не существует, и поэтому я думаю, что он не нужен... Почему бы и нет?

1 ответ

Решение

Мы на самом деле изначально имели их на <body> тег.:)

Мы переместили их по двум небольшим причинам:

  • Ошибка нескольких имен классов в IE6
  • CMS, которые используют элемент body для своих собственных классов.

Вы можете переместить классы в <body> без особых проблем. Вы также можете оставить lang=en на элемент HTML, очистка вещей.

Больше подробностей здесь: https://github.com/h5bp/html5-boilerplate/issues/44

Другие вопросы по тегам