HTML5 Boilerplate + условные комментарии - PullRequest
1 голос
/ 10 ноября 2011

Я использую 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 такого комментария не существует, и поэтому я думаю, что он не нужен ... Почему нет?

1 Ответ

3 голосов
/ 10 ноября 2011

У нас изначально они были в теге <body>.:)

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

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

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

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

...