Проблемы с текстом IE и HTML5

Я использую отличный HTML5-шаблон. Это отличный проект, но у меня есть некоторые большие проблемы с рендерингом в IE 8 и 7 (возможно, 8, но еще не пробовал)

У файлов есть тип HTML5:

<!doctype html>
<head>

Но проблема в том, что без полного и уродливого доктрифа, такого как...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

Я получаю всевозможные проблемы с рендерингом: центрирование по краю: авто не работает, высоты, ширина, матчи и прокладки все ведут себя как сумасшедшие, и все мои макеты разбиты только с помощью <!doctype>, но если я переключусь на старый один, все работает отлично (ну, не очень, он все же IE, но как и ожидалось)

HTML5 Boilerplate поставляется с модернизатором, который, я думаю, должен исправить это, но он не работает. Из моего "исследования" (Google) я обнаружил, что IE входит в режим quirks mode <!doctype>, поэтому вопрос...

Есть ли способ предотвратить запуск IE в режиме quirks с помощью <!doctype>?

Или, по крайней мере, не разрывать поля, ширину, paddings и т.д.

Изменить: Это полная глава:

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8">

Ответ 1

IE не переходит в режим quirks с этим типом doctype. Шаблон должен фиксировать проблемы IE, не вызывая их. Вам не хватает элемента <html> после doctype. Добавьте это, чтобы увидеть, изменились ли вещи. HTML5 не требует этого, но, если отсутствует, IE или шаблоны могут сойти с ума в соответствии с документами.

Кроме того, просто удалите комментарии после doctype и это должно устранить проблему.

Ответ 2

Попробуйте поместить это в тег <head></head>:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Если он уже существует, удалите его и вы получите желаемые результаты.

Ответ 3

IE не входит в quirks с HTML doctype - что вся точка!

Что хорошего в этом новом DOCTYPE, тем более, что все текущие браузеры (IE, FF, Opera, Safari) будут смотреть на него и переключать контента в стандартном режиме - даже если они не реализуют HTML5. Это означает, что вы можете начать писать свои веб-страницы с помощью HTML5 сегодня, и они будут длиться очень, очень, долгое время.

(http://ejohn.org/blog/html5-doctype/)

Однако, наличие чего-либо перед doctype (новые строки, комментарии и т.д.) будет.

Я бы проверил, что вы делаете - доктрины HTML5 не будут помещать ваш браузер в причуды.

Ответ 4

Я не слишком "византийский", но не будет ли работать над условным html и объявить doctype HTML 4.01 для IE8 и ниже следующим образом:

<!-- HTML 5 doctype -->
<!doctype html>

<!-- HTML 4.01 Doctype -->
<!--[if lte IE 8]>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<![endif]-->

Если это не работает в старых браузерах (из-за того, что браузер читает два доктрины), вы можете попробовать следующее:

<!DOCTYPE HTML <!--[if lte IE 8]>PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
<![endif]-->>

Ответ 5

Вероятно, он переходит в режим совместимости с условными комментариями. Мы рекомендуем установить сервер заголовка x-ua-compatible в файле .htaccess или в других конфигурационных файлах сервера.

Ответ 6

Я не вижу ничего плохого в разметке full head, которую вы опубликовали. Это стандартная разметка, широко используемая в шаблонах, которые включают Modernizr, отличную библиотеку JavaScript, используемую для обнаружения функций браузера.

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

Я использую его в своем текущем приложении и не вижу проблем в любом браузере. Хотя я использую его так:

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>

Для тестирования условных комментариев IE я тестировал на IE9, IE8 и IE7, как с прописным, так и с нижним регистром, только для двойной проверки.

Единственное, что я наблюдал на IE7, заключалось в том, что webfonts (все четыре в моем приложении) иногда не отображались, когда я использовал <!doctype html> вместо <!doctype html>.

FYI: Я только что проверил и вижу, что Проект Boilerplate HTML5 имеет удалена поддержка условных комментариев IE 24 сентября 2013 года. Я не могу подтвердить, когда в проект были представлены условные комментарии, но может видеть, что it когда-то рядом с телом тела, когда проект был перенесен на Github 24 января 2010 года.

Ответ 7

Попробуйте сохранить файл как UTF-8 без спецификации. Это помогло мне.

Ответ 8

попробуйте DOCTYPE html вместо doctype html Теги doctype чувствительны к регистру, это будет причиной.