DOCTYPE คืออะไร


174
  • DOCTYPE คืออะไรและเพราะเหตุใดฉันจึงต้องการใช้
  • DOCTYPE ต่างกันฉันสามารถใช้อะไรได้บ้าง
  • อะไรคือความแตกต่างระหว่างมาตรฐานและโหมดนิสัยใจคอและนิสัยใจคอบางอย่างที่ฉันอาจพบเจอกับ DOCTYPE ที่ตั้งค่าแตกต่างกันคืออะไร?

สุดท้าย DOCTYPE ที่เหมาะสมที่ฉันควรใช้คืออะไร


9
นี่ไม่ควรเป็นวิกิหรือ
Alex

คำตอบ:


76

โดยทั่วไป DOCTYPE จะอธิบายถึง HTML ที่จะใช้ในหน้าของคุณ

เบราว์เซอร์ยังใช้ DOCTYPE เพื่อกำหนดวิธีแสดงหน้าเว็บ การไม่รวม DOCTYPE หรือการรวมที่ไม่ถูกต้องอาจทำให้เกิดโหมดนิสัยใจคอ

kicker ที่นี่คือโหมด quirks ใน Internet Explorer ค่อนข้างแตกต่างจากโหมด quirks ใน Firefox (และเบราว์เซอร์อื่น ๆ ); หมายความว่าคุณจะมีงานหนักมากขึ้นพยายามตรวจสอบให้แน่ใจว่าหน้าเว็บของคุณแสดงผลอย่างต่อเนื่องกับเบราว์เซอร์ทั้งหมดหากมีการเรียกใช้โหมด quirks มากกว่าที่คุณจะทำได้หากแสดงผลในโหมดมาตรฐาน

วิกิพีเดียมีสรุปเพิ่มเติมในเชิงลึกของความแตกต่างในการแสดงผลเมื่อใช้ doctypes XHTML เปิดใช้งานโดย doctypes บางและมีค่อนข้างบิตของการอภิปรายเกี่ยวกับการใช้ XHTML ที่ถูกปกคลุมดีในXHTML - ตำนานและความเป็นจริง

มีความแตกต่างเล็กน้อยระหว่าง DOCTYPE การเรนเดอร์มาตรฐานที่แตกต่างกันเช่น HTML5 DOCTYPE ( <!DOCTYPE html>ก่อน HTML5 เป็นที่รู้จักในชื่อ การเปลี่ยนผ่าน 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
วอลเตอร์ Rumsby

53
IE6 browsers เบราว์เซอร์ที่ทันสมัย

26

DOCTYPE จะบอกตัวแทนผู้ใช้ที่ใช้งาน (เว็บเบราว์เซอร์ซอฟต์แวร์รวบรวมข้อมูลเว็บเครื่องมือตรวจสอบ) ไฟล์ประเภทใด การใช้มันช่วยให้มั่นใจได้ว่าผู้บริโภคจะแยกวิเคราะห์ HTML อย่างถูกต้องตามที่คุณต้องการ

มี DOCTYPES ที่แตกต่างกันหลายอย่างสำหรับ HTML, XHTML และ Framesets และแต่ละอันมีสองโหมด Strict และ Transitional Strict บอกว่ามาร์กอัปของคุณใช้มาตรฐานที่กำหนดอย่างแน่นอน ดูหน้าW3C DTDsสำหรับรายละเอียดเพิ่มเติม

Quirksmode นั้นเป็นวิธีการเลย์เอาต์จากยุคสงครามเบราว์เซอร์เมื่อมาตรฐานได้รับการเคารพและการกำหนดน้อย โดยทั่วไปหน้าโหมดมาตรฐานที่ถูกต้องจะจัดวางเค้าโครงอย่างสม่ำเสมอในเบราว์เซอร์ต่างๆ แต่อาจไม่มีคุณสมบัติบางอย่างที่คุณต้องการ หนึ่งในคุณสมบัติดังกล่าวคือคุณสมบัติเป้าหมายของแท็กจุดยึด quirksmodeเว็บไซต์เป็นทรัพยากรที่ดีแตกต่างเหล่านี้

หนึ่งความคิดสุดท้ายคือมาตรฐาน HTML5 ใหม่เสนอโดยใช้ DOCTYPE ที่ง่ายมาก:

<!DOCTYPE html>

การใช้ DOCTYPE นี้เป็นวิธีที่เข้ากันได้ในการระบุว่าหน้าเว็บของคุณอยู่ในโหมดมาตรฐานและเป็น HTML นี่คือวิธีการที่ Google ใช้และจดจำได้ง่ายพอสมควร ฉันแนะนำให้ใช้ DOCTYPE นี้ยกเว้นว่าคุณวางแผนที่จะใช้ XHTML


2
แท็ก HTML DOCTYPE คืออะไร ถ้าเป็นเช่นนั้นแล้วทำไมเราต้องเริ่มต้นด้วย
CuriousMind

2
@vipinkoul แท็ก DOCTYPE ระบุประเภทของเอกสาร HTML ที่คุณกำลังส่ง User-Agent อาจเป็น HTML หรือ XHTML หรือ Frameset และมันอาจเป็น Strict HTML / XHTML / Frameset หรือ Transitional HTML / XHTML / Frameset ส่วนใหญ่จะมีผลต่อวิธีที่ parser ตอบสนองเมื่อพบข้อผิดพลาด
Rob

6

ประเภทเอกสารจะกำหนดเวอร์ชันของ HTML / XHTML ที่เอกสารของคุณใช้ คุณต้องการใช้ doctype เพื่อให้เมื่อคุณเรียกใช้รหัสผ่านตัวตรวจสอบความถูกต้องตัวตรวจสอบจะทราบว่า HTML / XHTML เวอร์ชันใดที่จะตรวจสอบ หน้านี้ให้ภาพรวมที่ดี:

อย่าลืมเพิ่ม doctype

หลักคำสอนทั่วไปที่คุณสามารถใช้ได้มีระบุไว้ที่นี่:

รายการ DTD ที่แนะนำ

คุณควรใช้ Doctype ประเภทใดขึ้นกับรหัสที่คุณใช้ แต่เพื่อให้ได้แนวคิดลองใช้รหัสของคุณผ่านเครื่องมือตรวจสอบความถูกต้อง W3C และใช้เมนูแบบเลื่อนลงประเภทเอกสารในเมนู "ตัวเลือกเพิ่มเติม" เพื่อลองใช้ประเภทคำสั่งอื่น .

บริการตรวจสอบความถูกต้องของมาร์กอัป W3C


3

ใน HTML (รวมถึง XHTML) ที่ใช้บนหน้าเว็บ DOCTYPE เป็นสตริงที่เรียกหนึ่งในไม่กี่โหมดเบราว์เซอร์ (โหมด quirks โหมดมาตรฐานโหมดมาตรฐานเกือบ) ขึ้นอยู่กับการสะกดที่แน่นอนของ DOCTYPE คุณต้องการใช้มันเพื่อเลือกโหมดเบราว์เซอร์ที่เหมาะกับหน้าของคุณมากที่สุด

อย่างเป็นทางการใน SGML และ XML การประกาศ DOCTYPE เป็นการอ้างอิงถึง Document Type Definition (DTD) ซึ่งระบุกฎไวยากรณ์อย่างเป็นทางการของภาษามาร์กอัป ไม่มีเบราว์เซอร์ใด ๆ ที่เคยใช้ DTD เพื่ออะไรหรือแม้กระทั่งเข้าถึงได้ อย่างไรก็ตามมันถูกใช้โดยตัวตรวจสอบความถูกต้องของ SGML และ XML เช่นตัวตรวจสอบความถูกต้องของมาร์กอัปW3Cยกเว้นในโหมด HTML5 ดังนั้นตัวเลือกของ DOCTYPE จะกำหนดวิธีการทำงานของเครื่องมือตรวจสอบหากเอกสารถูกส่งไป อย่างไรก็ตามโหมดการทำงานของตัวตรวจสอบความถูกต้องสามารถเลือกได้ในส่วนต่อประสานผู้ใช้ (ตัวประมวลผล SGML และ XML อาจใช้ DOCTYPE ในวิธีอื่นด้วยเช่นกัน แต่คำถามนี้มีความหมายชัดเจนว่า จำกัด บริบท HTML และเว็บเบราว์เซอร์และซอฟต์แวร์ที่เกี่ยวข้องอย่างใกล้ชิด)

ไม่มีรายการที่เชื่อถือได้ของ DOCTYPE ข้อกำหนดหรือร่าง HTML แต่ละรายการกำหนด DOCTYPE ของตัวเองหรือ DOCTYPE ชุดของ DOCTYPE ที่เบราว์เซอร์รู้จักเมื่อเลือกโหมดจะแตกต่างกันไปตามเบราว์เซอร์ ในทางปฏิบัติไม่มีเหตุผลที่จะใช้ DOCTYPE นอกเหนือจาก<DOCTYPE html> ที่กำหนดไว้ใน HTML5แม้ว่า HTML5 จะแสดงรายการ“ DOCTYPE ดั้งเดิม” สองสามรายการ คุณสามารถใช้ DOCTYPE นั้นหากคุณต้องการโหมดมาตรฐาน (แนะนำสำหรับหน้าใหม่) และไม่ใช้ DOCTYPE หากคุณต้องการโหมด quirks (ซึ่งคุณอาจต้องใช้สำหรับหน้าดั้งเดิม)

“ โหมดมาตรฐาน” โดยทั่วไปหมายถึงโหมดการทำงานที่เบราว์เซอร์ปฏิบัติตาม HTML, CSS, DOM และข้อกำหนดอื่น ๆ ที่ดีที่สุด มันไม่ได้หมายถึงความสอดคล้องแบบเต็ม “ โหมด Quirks” นั้นแตกต่างกันไปในเบราว์เซอร์ที่แตกต่างกัน แต่โดยทั่วไปแล้วมันหมายถึงความพยายามเลียนแบบพฤติกรรมของเบราว์เซอร์ที่เก่ามากอย่าง IE 5 จุดประสงค์คือเพื่อให้หน้าเก่าทำงานได้ภายใต้สมมติฐานว่า เบราว์เซอร์เก่า ดูคำอธิบายเกิดอะไรขึ้นในโหมด Quirks หมายเหตุว่ามีความแตกต่างกันค่อนข้างแนวคิดที่ จำกัด มากขึ้นของ“โหมดนิสัยใจคอ” ใน HTML5 ซึ่งคล้ายกับเอกสารที่เรียกว่าQuirks โหมด Living มาตรฐาน

ปัญหาทั่วไปคือความกว้างขององค์ประกอบนั้นจะคำนวณต่างกันในโหมด quirks และในโหมดมาตรฐาน ซึ่งหมายความว่ารูปแบบของหน้าอาจมีการเปลี่ยนแปลงมากหรือน้อยหรือแม้กระทั่งความยุ่งเหยิงโดยสิ้นเชิงหากหน้าเว็บที่ออกแบบมาเพื่อทำงานในโหมด quirks ดูในโหมดมาตรฐาน (หรือกลับกัน)

ดังนั้นคุณควรใช้<!DOCTYPE html>สำหรับหน้าใหม่และเก็บ DOCTYPE อะไรก็ได้ (ถ้ามี) ที่คุณใช้สำหรับหน้าเก่า

อย่างไรก็ตามโหมด quirks หมายถึงในบางเบราว์เซอร์ที่ไม่รองรับคุณสมบัติใหม่ ๆ ของ CSS ซึ่งหมายความว่าหากคุณต้องการปรับปรุงหน้าเก่าด้วยคุณสมบัติ CSS3 บางอย่างคุณอาจจำเป็นต้องสลับไปใช้ DOCTYPE ที่เรียกใช้โหมดมาตรฐาน ในกรณีเช่นนี้คุณต้องตรวจสอบและทดสอบหน้าเว็บเพื่อดูว่าจะทำงานในโหมดมาตรฐานหรือไม่


ขอขอบคุณสำหรับรายละเอียดเพิ่มเติมโดยเฉพาะอย่างยิ่งสิ่งเหล่านี้: «ไม่มีเบราว์เซอร์ที่เคยใช้ DTD สำหรับสิ่งใด ๆ หรือแม้แต่เข้าถึงพวกเขา»และ«ไม่มีเหตุผลที่จะใช้ DOCTYPE นอกเหนือจาก<DOCTYPE html>ที่กำหนดไว้ใน HTML5 »
Armfoot

2

Doctypes บอกเบราว์เซอร์ในภาษาที่ใช้เขียนหน้านี้ไม่ว่าจะเป็น HTML หรือ XHTML ตัวอย่างเช่น,

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

HTML4 strictบอกเบราว์เซอร์ที่จะทำให้หน้าเป็น เบราว์เซอร์ที่เก่ากว่าใช้ในการแสดงผลหน้าเว็บไม่ถูกต้องดังนั้นเบราว์เซอร์ที่ใหม่กว่าจะจำลองข้อผิดพลาดของเบราว์เซอร์ที่เก่ากว่าเมื่อพบ doctype แบบเก่า

วันนี้คุณควรใช้อย่างน้อย HTML4 หรือ XHTML ที่ดีกว่า

รายการบล็อกเกี่ยวกับหลักคำสอนคือแก้ไขไซต์ของคุณด้วย DOCTYPE ที่ถูกต้อง! (จากรายการนอกเหนือ )


1

ก่อนอื่นไม่มีประเภทของประเภทที่คุณควรใช้ แต่นักออกแบบส่วนใหญ่พยายามทำให้มันใช้งานได้ภายใน XHTML 1.0 Strict

Doctype ไม่มีอะไรมากไปกว่าการประกาศว่าแท็กใดที่คุณสามารถใช้ภายใน html ของคุณ (แม้ว่าเบราว์เซอร์สามารถใช้มากกว่าหรือน้อยกว่าที่กำหนดไว้) คุณสามารถเปิดไฟล์ doctype และเริ่มอ่าน ( XHTML 1.0 Strict )

หากคุณไม่ได้ระบุประเภทของเบราว์เซอร์เบราว์เซอร์จะพยายามอย่างดีที่สุดที่จะคาดเดา แต่ไม่นิยมประเภทที่ถูกต้องเสมอไป

โหมด Quirks เป็นเพียงเทคนิคที่ใช้โดยเบราว์เซอร์เพื่อให้เข้ากันได้ย้อนหลังเป็นตัวอย่างที่ดีของโหมด quirks คือวิธีที่IE แสดงผลกล่อง


1

Doctype เป็นเอกสารที่อธิบายว่าเนื้อหาของเอกสารคล้าย xhtml สามารถมีลักษณะอย่างไร (เช่นหน้าเว็บ) หมายเหตุ: สิ่งนี้จะกำหนดเฉพาะไวยากรณ์ของหน้าดังกล่าวการแสดงผลหน้าไม่ได้กำหนดโดย DTD!

ตัวอย่างเช่น doctype สามารถกำหนดว่า<table>-tag สามารถมีลักษณะอย่างไร - ซึ่งแอททริบิวใดที่มันยอมรับและสิ่งที่ยอมรับ / ค่านิยมสำหรับแต่ละคุณลักษณะ คิดว่ามันเป็นพจนานุกรมสำหรับหน้าเว็บปัจจุบันของคุณ

Wikipediaมีหน้าข้อมูลใน Doctypes ที่ใช้กันทั่วไป ระวังคุณ - ไม่มีอะไรหยุดยั้งคุณไม่ให้สร้างประเภทของคุณเอง อย่างไรก็ตามมีโอกาสที่เบราว์เซอร์อาจไม่รู้วิธีแสดงเอกสารของคุณ

DTD ใดที่ใช้จะขึ้นอยู่กับสิ่งที่คุณกำลังจะเขียน XHTML มี DTD ที่แตกต่างจาก HTML อย่างสิ้นเชิง


1

บนเว็บ doctype ไม่ได้ทำอะไรนอกจากบอกเบราว์เซอร์ถ้าคุณต้องการมาตรฐานเกือบมาตรฐานหรือโหมดนิสัยใจคอ

สิ่งที่เปลี่ยนแปลงในโหมดนิสัยใจคอขึ้นอยู่กับเบราว์เซอร์: Firefox, Opera, Safari และ Chrome ใช้ชุด จำกัด ของนิสัยใจคอเช่นการเอาพื้นที่สำหรับ descenders ข้อความในรหัสเช่น<table><tr><td><img></td></tr></table>(สารละลาย: td img { vertical-align:bottom; }) IE กลับไปเป็นเอ็นจิ้นการเรนเดอร์ใน IE5.5 ซึ่งหมายความว่าคุณจะไม่สามารถใช้คุณสมบัติใหม่ใด ๆที่นำมาใช้ตั้งแต่ปี 2000

หากต้องการเรียกใช้โหมดมาตรฐานฉันขอแนะนำให้ใช้ประเภท HTML5 <doctype html>เนื่องจากเป็นวิธีที่ง่ายที่สุดในการจำ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.