2013-09-26 3 views
0

У меня довольно ужасное время. У нас массивный сайт, который не имеет <DOCTYPE>, и когда я запускаю его с IE10, он переходит в режим причуд и после некоторых изменений CSS выглядит нормально. Как только я добавлю echo "<!DOCTYPE HTML>";Режимы Doctype и Quirk и HTML 5

Полный сайт выглядит ужасно, и CSS не выглядит так, как он полагает. Он превращает режим браузера в IE10 и docmode в стандартную. Есть ли способ сохранить функциональность HTML 5, но использовать режим Quirks IE5 или режим Quirks, чтобы CSS выглядел корректно?

+0

Почему вы отметите это [Google-хром], когда ваш вопрос, кажется, о IE? – BoltClock

ответ

1

Нет. Весь смысл режима quirks заключается в том, что это режим совместимости для IE5. Это означает, что в дополнение к изменению режима макета он также отключает большинство функций браузера, которые были изобретены с IE5.

Поэтому тупой ответ - нет, вы не можете смешивать режим Quirks и HTML5. Этого просто не может быть.

Однако для вас есть хорошая новость: переход от режима quirks к стандартным режимам на самом деле проще, чем на первый взгляд.

Вам не нужно проходить через весь сайт, изменяя все CSS, чтобы соответствовать другой модели коробки, потому что режим стандартов имеет функцию CSS, которая позволяет использовать модель режима режима quirks, оставаясь в стандартном режиме ,

Просто добавьте следующие строки в верхней части кода CSS:

* {box-sizing:border-box;} 

Это изменит все элементы, чтобы использовать блочную модель режима причуды, но ваша страница будет по-прежнему находиться в стандартном режиме.

Это должно устранить большинство (если не всех) проблем с макетом, которые у вас были.

Надеюсь, что это поможет.

+2

HTML5 также работает в режиме Quirks. И переход от режима Quirks к стандартным режимам * намного сложнее, чем может показаться. –

+0

@ JukkaK.Korpela: Я не согласен. Много вещей не работают в Quirks. У меня нет полного списка, и я знаю, что это зависит от браузеров, но особенно в IE многое отсутствует, в основном потому, что все функции CSS2/CSS3 удалены, а также многие JS API. Кроме того, решение 'box-sizing', которое я дал *, * касается проблемы с основной коробкой (это действительно вся причина« размер окна »), и поскольку это было именно то, с чем боролся OP, я не понимаю, почему вы меня превзошли. В любом случае ОП принял ответ, поэтому можно надеяться, что это означает, что он попробовал это, и это сработало для него. – Spudley

+0

Можете ли вы упомянуть одну * функциональность HTML5 * (о чем и был вопрос), на который влияет наличие или отсутствие строки 'doctype'? –

0

Нет, нет. Современный движок, который включает в себя новые функции и движок для подражания старым, более грубым браузерам, - это отдельные объекты, и вы не можете смешивать и сопоставлять их части.

0

В отношении браузеров, отличных от IE, вы можете добавить теги и атрибуты, представленные в HTML5, без использования <!DOCTYPE>. Тогда страница не будет соответствовать HTML5, но это просто формальность как таковая. Браузеры делают то, что они делают, интерпретируя теги и атрибуты, как они были запрограммированы. В браузерах нет режима «HTML5», который вам нужно будет запускать с помощью <!DOCTYPE> или иначе. Просто попробуйте. Бросьте некоторые новинки HTML5, такие как <input type=email> или <details>, и вы увидите, что они работают, если браузер поддерживает их в первую очередь, независимо от того, есть ли <!DOCTYPE> или нет.

У вас возникли бы трудности при использовании валидатора разметки, но это другая проблема.

Quirks Mode - настоящий беспорядок, с десятками недокументированных и плохо документированных явлений. Если страница работает в режиме Quirks, и затем вы делаете браузеры рендерингом в режиме стандартов, буквально все может произойти, от любого эффекта до полного бедствия. Поэтому такое изменение обычно бессмысленно рискованно. Используйте режим Quirks для старых страниц, разработанных для его использования, и создайте новые страницы для работы в стандартном режиме (и, возможно, для соответствия HTML5).

Режим Quirks влияет на стиль и в некоторой степени сценарии. Это незначительно влияет на интерпретацию некоторых старых атрибутов HTML.Но в большинстве браузеров не так, как работают новые функции HTML5.

Однако IE особенно изворотливый. В IE 10 это, как представляется, применяется. В IE 11 Preview сообщается об отклонениях. И в IE 9 некоторые из нововведений HTML5, которые в противном случае поддерживались бы, не поддерживаются в режиме Quirks, например, элемент canvas. Поэтому, если вы намерены добавить существенные использование новых функций HTML5 на старую страницу, которая теперь работает в режиме Quirks, вам может потребоваться сначала перейти на страницу «Стандартные стандарты». В зависимости от влияния особенностей Quirks это может быть лучше всего сделано путем перезаписи страницы, или это может быть «только», чтобы пересмотреть использование CSS для соответствия спецификациям CSS.

[Ответ исправлен 15 окт 2013 г.]

+0

Прежде чем вы подумаете, что я сделал реванш, обратите внимание, что это был не я. – Spudley

+0

Мне все равно, кто проиграл, но я бы хотел, чтобы какие-либо из моих заявлений здесь доказали (или даже заявили) неправильно или неактуальны. –

+1

На самом деле режим Quirks HTML5, в отличие от очень разных IE10 «IE5 quirks mode», очень хорошо документирован. В самом деле, именно поэтому HTML5 относится к «стандартным» режимам как к режиму «no-quirks», поскольку режим «quirks» стандартизирован. Функции HTML5 будут работать в режиме HTML5 quirks, но не в режиме IE5 quirks. Смущает, не так ли? – Alohci