Що таке ДОКТИП?


174
  • Що таке DOCTYPE і чому я хочу його використовувати?
  • Які різні ДОКТИПИ я можу використовувати?
  • Яка різниця між стандартами та режимом примх, а також якими примхами я можу зіткнутися з різними встановленими DOCTYPE?

Нарешті, що є правильним ДОКТИПУ, яким я повинен користуватися?


9
Чи не повинен це бути вікі?
Олексій

Відповіді:


76

В основному DOCTYPE описує HTML, який буде використовуватися на вашій сторінці.

Браузери також використовують DOCTYPE для визначення способу візуалізації сторінки. Якщо не включати DOCTYPE або включати неправильний, може запустити режим примх.

Тут є те, що режим вигадок в Internet Explorer сильно відрізняється від режиму вигадок у Firefox (та інших браузерах); Це означає, що у вас буде набагато складніше завдання, намагаючись забезпечити, щоб ваша сторінка відображалася послідовно з усіма веб-переглядачами, якщо спрацював режим примх, ніж ви будете, якщо він відображається в стандартному режимі.

У Вікіпедії є більш поглиблений підсумок відмінностей у візуалізації при використанні різних DOCTYPE . XHTML увімкнено певними DOCTYPE, і існує досить багато дискусій щодо використання XHTML, що добре висвітлено в XHTML - міфи та реальність .

Існують тонкі відмінності між різними "сумісними зі стандартами" рендеринга DOCTYPE, такими як DOCTYPE HTML5 ( <!DOCTYPE html>до HTML5, відомий лише як "худий докттип", який не запускає стандартизоване відображення у старих браузерах) та іншими DOCTYPE, такими як цей для Перехідний HTML 4.01:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

39
У наші дні я віддаю перевагу HTML5 DOCTYPE: <! DOCTYPE html> він працює у всіх сучасних браузерах, включаючи IE6.
Вальтер Рамсбі

53
IE6 ∉ сучасні браузери

26

DOCTYPE повідомляє споживчому агенту користувача (веб-браузери, веб-сканери, інструменти перевірки), який тип документа є файлом. Використання його гарантує, що споживач правильно розбирає HTML так, як ви його задумали.

Існує кілька різних ДОКТИПІВ для HTML, XHTML та наборів фреймів, і кожен з них має два режими Strict і Transitional. Строгий говорить, що ваша розмітка точно використовує визначені стандарти. Детальнішу інформацію див. На сторінці W3C DTD .

Quirksmode - це в основному метод компонування з часів війни в браузері, коли стандарти були набагато менш дотримані та визначені. Як правило, сторінка стандартного режиму, що є дійсною, буде розміщуватись більш послідовно у різних браузерах, але може бракувати певних функцій, які вам потрібні. Однією з таких особливостей є цільовий атрибут тега якоря. Сайт Quirksmode - чудовий ресурс для цих відмінностей.

Остання заключна думка полягає в тому, що новий стандарт HTML5 пропонує використовувати дуже простий DOCTYPE:

<!DOCTYPE html>

Використання цього DOCTYPE - це сумісний з прямим способом визначення того, що ваші сторінки перебувають у стандартному режимі та є HTML. Це метод, який використовує Google, і його досить легко запам’ятати. Я рекомендую використовувати цей DOCTYPE, якщо ви не плануєте використовувати XHTML.


2
Чи тег HTML DOCTYPE? Якщо так, то з чого нам це потрібно для початку?
CuriousMind

2
@vipinkoul Тег DOCTYPE визначає, який тип HTML-документа ви надсилаєте User-Agent. Це може бути HTML або XHTML або Frameset. І це може бути Строгий HTML / XHTML / Frameset або Перехідний HTML / XHTML / Frameset. Переважно це впливає на те, як аналізатор реагує, коли стикається з помилкою.
Роб

6

Доктіп визначає, яку версію HTML / XHTML використовує ваш документ. Ви хочете використовувати doctype, щоб під час запуску коду через валідатори валідатори знали, у якій версії HTML / XHTML слід перевірити. Ця сторінка дає хороший огляд:

Не забудьте додати вчення

Тут перелічені загальні доктитипи:

Рекомендований список DTD

До якого типу ви хочете скористатися, залежить від коду, який ви використовуєте, але, щоб отримати уявлення, спробуйте запустити свій код через валідатор W3C та скористайтеся спадним меню Тип документа в меню "Додаткові параметри", щоб випробувати різні доктити .

Служба перевірки розмітки W3C


3

У HTML (включаючи XHTML), що використовується на веб-сторінках, DOCTYPE - це рядок, який запускає один із кількох режимів браузера (режим примх, стандартний режим, майже стандартний режим), залежно від точного написання ДОКТОПУ. Ви хочете використовувати його, щоб вибрати режим браузера, який найкраще відповідає вашій сторінці.

Формально в SGML та XML декларація DOCTYPE є посиланням на визначення типу документа (DTD), яке визначає формальні правила синтаксису мови розмітки. Жоден веб-переглядач ніколи не використовував DTD ні для чого і навіть не звертався до них. Однак вони використовуються валідаторами розмітки SGML та XML, такими як перевірка розмітки W3C , за винятком режиму HTML5. Тому вибір DOCTYPE визначає, як працює валідатор, якщо документ йому подається. Однак режим роботи валідатора також може бути обраний у його користувальницькому інтерфейсі. (Процесори SGML та XML можуть також використовувати DOCTYPE і іншими способами, але, мабуть, питання має бути обмежене контекстом HTML та веб-браузерами та програмним забезпеченням, пов’язаним із ними.)

Немає авторитетного списку DOCTYPE. Кожна специфікація або чернетка HTML визначає свій власний DOCTYPE або DOCTYPE. Набір DOCTYPE, розпізнаних браузерами при виборі режиму, залежить від браузера. На практиці немає ніяких причин використовувати інший DOCTYPE, ніж <DOCTYPE html> визначено в HTML5 , хоча HTML5 також перелічує декілька "застарілих DOCTYPE". Ви можете використовувати цей DOCTYPE, якщо ви хочете стандартного режиму (рекомендується для нових сторінок), а не використовувати DOCTYPE, якщо ви хочете режиму вигадок (який може знадобитися для застарілих сторінок).

"Режим стандартів" зазвичай означає режим роботи, коли браузер дотримується HTML, CSS, DOM та інших специфікацій найкращим чином. Зазвичай це не означає повну відповідність. "Режим химерності" відрізняється в різних браузерах, але загалом це означає спробу наслідувати поведінку дуже старих браузерів, таких як IE 5. Метою є підтримка роботи старих сторінок під припущенням, що вони можуть покладатися на функції та помилки в старі браузери. Дивіться опис Що відбувається в режимі Quirks? Зауважте, що в HTML5 існує досить інше, більш обмежене поняття «режим примх», яке дуже нагадує документ під назвою Quirks Mode Living Standard .

Типовим питанням є те, що ширини елементів обчислюються по-різному в режимі примх і в стандартному режимі. Це означає, що макет сторінки може бути більш-менш змінений або навіть повністю зіпсований, якщо сторінка, призначена для роботи в режимі диваків, переглядається в стандартному режимі (або навпаки).

Тож вам слід використовувати <!DOCTYPE html>для нових сторінок і зберігати будь-який ДОКТИП (якщо такий є), який ви використовували для старих сторінок.

Однак режим quirks в деяких браузерах означає, що багато нових функцій CSS не підтримуються. Це означає, що якщо ви хочете покращити стару сторінку за допомогою якоїсь функції CSS3, можливо, буде потрібно перейти на ДОКТОМ, що запускає стандартний режим. У такому випадку вам потрібно переглянути та протестувати сторінку, щоб побачити, чи вона працюватиме в стандартному режимі.


Дякую за додаткову інформацію, спеціально таких: «Ні браузер ніколи не використовував DTDs для нічого або навіть зверталися їх» і «немає ніяких підстав використовувати DOCTYPE, крім , <DOCTYPE html>як це визначено в HTML5 ».
Armfoot

2

Доктіпти повідомляють браузеру, якою мовою написана сторінка, будь то HTML чи XHTML. Наприклад,

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

скажіть браузеру, щоб відобразити сторінку як HTML4 strict. Старі браузери використовуються для неправильного відображення сторінок, тому новіші браузери імітують помилки старих браузерів, коли знаходять старий тип.

Сьогодні вам слід використовувати принаймні HTML4 або краще XHTML.

Запис у блозі про доктрипи - це виправити ваш сайт правильним ДОКТИПОМ! (від A List Apart ).


1

Перш за все, немає жодного доктипу, яким ви повинні користуватися, але більшість дизайнерів намагаються змусити його працювати в XHTML 1.0 Strict.

Доктіп - це не що інше, як декларація про теги, які ви можете використовувати у своєму html (хоча браузери можуть використовувати більше чи менше, ніж визначено). Ви можете відкрити файл doctype і почати читати ( XHTML 1.0 Strict )

Якщо ви не вказуєте doctype, браузер намагатиметься відгадати, але не завжди потрапляє на правильний тип.

Режим Quirks - це лише техніка, яка використовується браузерами для того, щоб бути сумісними назад, чудовим прикладом режиму диваків є те, як IE робить вікна


1

Доктіп - це документ, який описує, як може виглядати вміст документа, схожого на xhtml (наприклад, веб-сторінки). Примітка: це визначає лише синтаксис вказаної сторінки, відображення сторінки НЕ визначається DTD!

Наприклад, вчення може визначати, як <table> може виглядати тег -tag - які атрибути він приймає та які значення / valuetypes приймаються для кожного атрибута. Подумайте про це як про лексикон вашої поточної веб-сторінки.

Вікіпедія є інформаційна сторінка про різні доктити, які є загальними. Майте на увазі - ніщо не заважає вам створити свій власний вчення. Однак є ймовірність, що веб-переглядач, ймовірно, не знає, як надати ваш документ.

Який DTD використовувати, залежить від того, що ви збираєтеся написати. Наприклад, XHTML має зовсім інший DTD, ніж HTML.


1

В Інтернеті doctype нічого не робить, окрім як повідомити броуреру, якщо ви хочете стандартів, майже стандартів або режиму примх.

Те, що зміниться в режимі примх, залежить від браузера: Firefox, Opera, Safari та Chrome реалізують обмежений набір химерностей, як-от видалення місця для текстових знижувачів у коді типу <table><tr><td><img></td></tr></table>(рішення td img { vertical-align:bottom; }:). IE, з іншого боку, повертається до двигуна візуалізації в IE5.5. Це означає, що ви не зможете використовувати жодну з нових функцій, впроваджених з 2000 року.

Щоб запустити стандартний режим, я пропоную використовувати доктрип HTML5 <doctype html>, оскільки це найлегше запам'ятати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.