Нужен ли Doctype для документов HTML5?

12

Недавно у меня было собеседование, и один из вопросов был «Нужен ли тип документа для документов HTML 5?». Я ответил «нет», но у меня есть ощущение, что я могу ошибаться. С w3 похоже, что это абсолютно необходимо, но если я наберу простой HTML, как

<html>
    <body>
        <input type="color" disabled/>
    </body>
</html>

сохраните его как HTML и попробуйте открыть в Chrome - он будет работать отлично, с новым вводом цвета (отключено). Этим вводом является HTML5, а также атрибут.

Итак, вопрос в том, нужно ли указывать тип документа или нет? Какой будет правильный ответ на собеседование?

user1582878
источник
1
Я думаю, вы могли бы утверждать, что без Doctypeэлемента это не документ HTML5.
MetaFight
Вы можете ввести hello worldтекстовый редактор, сохранить его как HTML, и он будет отображаться в Chrome. Оказывается, в Chrome (и во многих других браузерах) для вас есть что добавить, даже если это «необходимо».
intcreator

Ответы:

14

Правильный ответ будет «Это зависит».

DOCTYPE является необязательным для документов HTML5 с синтаксисом XHTML (т. Е. Документов XHTML5):

При желании XML-документы могут содержать DOCTYPE, но это не обязательно для соответствия этой спецификации.

DOCTYPE требуется для документов HTML5 в синтаксисе HTML :

Документы должны состоять из следующих частей, в указанном порядке:

[...]

3. ДОКТИП.

Исключения

ОООНР
источник
1
Это полный ответ, если «необходимо» интерпретируется как «требуется спецификациями». Это также может быть истолковано как относящееся к практическим последствиям. В этом случае ответом будет то, что в синтаксисе HTML необходима строка типа документа, чтобы браузеры перешли в «стандартный режим».
Юкка К. Корпела
Я хотел бы, чтобы этот ответ был лучше, если бы вы уточнили, когда документ является html vs xhtml. Что это значит для браузеров - как они решили, какой синтаксис оценивать?
temporary_user_name
7

Мне бы тоже ответили «нет» (неправильно, как это бывает).

Однако http://www.w3.org/TR/html5/syntax.html#the-doctype гласит:

8.1.1 DOCTYPE

DOCTYPE - обязательная преамбула.

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

Кстати, GIYF

Mawg говорит восстановить Монику
источник
1
Цитируемая часть относится только к синтаксису HTML.
Юкка К. Корпела
И заголовок вопроса «Нужен ли Doctype для документов HTML5» (QED).
Mawg говорит восстановить Монику
1
Спецификация HTML5 ясно и заметно говорит, что она определяет два синтаксиса для HTML5, один на основе оригинального HTML, а другой полностью соответствует XML. То, что вы цитируете, не отвечает на вопрос, поскольку относится только к одному из синтаксисов.
Юкка К. Корпела
Ах! Наконец то понял. Большое спасибо за разъяснения.
Mawg говорит восстановить Монику
2

Если вы хотите написать документ HTML5, соответствующий стандарту w3c, то <!DOCTYPE html>это необходимо.

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

Какой ответ подходит для этого интервью ? Это зависит от менталитета человека, который брал у тебя интервью. На собеседовании не имеет значения, правы вы или нет. Имеет значение только то, какое впечатление вы производите на интервьюера.

Philipp
источник
Интересный вопрос для меня: нужен ли DOCTYPE HTML5 на практике в 2020 году? Что делают текущие браузеры (FF, Chrome, Edge), если я его опускаю, но все же делаю код HTML-5 совместимым?
Panu Logic