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