Menu

Doctype HTML: Fungsi <!DOCTYPE html> dan Letaknya

<!DOCTYPE html> adalah baris pertama setiap dokumen HTML. Baris ini memberi tahu browser untuk menampilkan halaman dalam standards mode, bukan quirks mode. Pelajari sintaksnya, apa akibat doctype lama, dan cara memeriksa mode-nya.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Apa itu <!DOCTYPE html>

<!DOCTYPE html> adalah deklarasi doctype: baris pertama sebuah file HTML, sebelum tag <html>. Baris ini memberi tahu browser "ini dokumen HTML modern", dan browser menanggapinya dengan menampilkan halaman dalam standards mode, mengikuti spesifikasi HTML dan CSS saat ini.

Satu baris itu adalah seluruh doctype HTML5. Doctype tidak punya tag penutup dan tidak ada apa pun lagi di dalamnya.

Aturan sintaks

  • Doctype ditulis paling awal. Hanya spasi kosong dan komentar yang boleh muncul sebelumnya. Teks atau tag apa pun sebelum doctype membuat browser mengabaikannya.
  • Tidak peka huruf besar kecil. <!DOCTYPE html> dan <!doctype html> identik. Pilih satu gaya dan pertahankan.
  • Doctype bukan elemen. Tidak ada </!DOCTYPE>, dan kamu tidak bisa menambahkan class atau atribut lain padanya.
  • Kata setelah DOCTYPE harus html. <!DOCTYPE html5> bukan versi yang lebih baru; browser memperlakukan halaman itu seolah tidak punya doctype yang valid.
  • Satu per dokumen. Halaman yang dibangun dari beberapa file (template, include) tetap hanya menghasilkan satu doctype di bagian atas HTML akhirnya.

Standards mode dan quirks mode

Browser punya tiga mode tampilan, dan doctype memilih salah satunya:

ModeDipicu olehApa yang berubah
Standards mode<!DOCTYPE html> dan doctype modern lainnyaSemuanya mengikuti spesifikasi saat ini
Limited quirks modeHTML 4.01 Transitional atau Frameset dengan URL, XHTML 1.0 Transitional atau FramesetHampir standar: hanya satu aturan tinggi baris yang berbeda, jadi gambar yang sendirian di satu baris (biasanya di sel tabel) tidak punya celah di bawahnya
Quirks modeTanpa doctype, doctype yang salah ketik, atau beberapa doctype lama seperti HTML 4.01 Transitional tanpa URLMeniru browser tahun 1990-an: tinggi dalam persen, ukuran teks tabel, dan tinggi baris berperilaku berbeda

Quirks mode ada supaya halaman yang ditulis sebelum adanya standar web tetap terlihat seperti yang dilihat pembuatnya. Untuk halaman baru, mode ini hanya menimbulkan masalah: height: 100% yang berhasil di satu halaman tapi tidak di halaman lain, atau tabel yang mengabaikan ukuran font-mu, adalah gejala klasik doctype yang hilang.

Pratinjau editor di halaman ini selalu tampil dalam standards mode, jadi menghapus doctype di sana tidak akan menunjukkan quirks mode. Pemeriksa di bawah ini memakai DOMParser, yang menerapkan aturan yang sama dengan yang dipakai browser saat memuat file. Edit doctype di kotak teks dan mode-nya ikut berubah:

Coba hapus barisnya, ketik <!DOCTYPE html5>, atau taruh sebuah kata sebelum doctype: masing-masing mengubah hasilnya menjadi quirks.

Doctype lama: HTML 4.01 dan XHTML

Sebelum HTML5, doctype menyebut file DTD dengan identifier publik yang panjang. Kamu masih akan menemukannya di bagian atas situs-situs lama:

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

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Browser tidak pernah mengunduh file DTD itu. Browser hanya membaca identifier-nya untuk memilih mode: HTML 4.01 Strict dan XHTML 1.0 Strict menghasilkan standards mode, versi Transitional menghasilkan limited quirks mode, dan HTML 4.01 Transitional tanpa URL menghasilkan quirks mode penuh. Tempel salah satunya ke pemeriksa di atas untuk mengujinya; perhatikan bahwa compatMode melaporkan limited quirks mode sebagai CSS1Compat, nilai yang sama dengan standards mode, jadi hanya quirks mode penuh yang muncul sebagai BackCompat.

Mengganti doctype lama dengan <!DOCTYPE html> aman untuk halaman yang sudah dalam standards mode. Halaman yang tadinya dalam quirks mode bisa sedikit bergeser (biasanya tinggi elemen dan celah di bawah gambar), jadi periksa tampilannya setelah perubahan.

Doctype di DOM

Doctype menjadi node DocumentType, terpisah dari elemen <html>. Script membacanya lewat document.doctype, dan document.compatMode melaporkan mode yang akhirnya dipakai halaman:

document.compatMode adalah cara tercepat untuk memeriksa situs mana pun yang sedang aktif: buka console browser lalu ketikkan. "CSS1Compat" berarti standards mode (atau limited quirks mode), "BackCompat" berarti quirks mode.

Kerangka HTML5 lengkap

Doctype adalah satu bagian dari dokumen minimal yang seharusnya menjadi awal setiap halaman. Setiap baris di bawah ini punya tugasnya masing-masing:

Atribut lang dan tag meta viewport masing-masing punya halamannya sendiri.

Kesalahan umum

  • Ada sesuatu sebelum doctype. Karakter nyasar, echo untuk debug dari script server, atau tag HTML di atas <!DOCTYPE html> membuat seluruh halaman masuk ke quirks mode. Komentar dan baris kosong tidak masalah.
  • Mengarang versi. <!DOCTYPE html5> atau <!DOCTYPE HTML 5> tidak valid dan memicu quirks mode. Doctype HTML5 cukup <!DOCTYPE html>.
  • Menutupnya. <!DOCTYPE html></!DOCTYPE> bukan HTML yang valid. Deklarasi ini tidak punya tag penutup.
  • Tidak menulisnya di file uji kecil. Bug layout yang kamu kejar di file coba-coba tanpa doctype mungkin tidak ada di halaman sebenarnya, dan sebaliknya.
  • Mempertahankan doctype Transitional lama. Doctype itu membuat halaman masuk ke limited quirks mode tanpa manfaat apa pun. Ganti dengan <!DOCTYPE html>.

Pertanyaan yang sering diajukan

Apa fungsi <!DOCTYPE html>?

Baris ini memberi tahu browser bahwa halamannya adalah dokumen HTML modern, jadi halaman ditampilkan dalam standards mode. Tanpa baris ini, browser kembali ke quirks mode, yang meniru bug browser akhir 1990-an dan mengubah cara menghitung beberapa layout dan tinggi elemen.

Apakah <!DOCTYPE html> wajib?

Halaman tetap bisa dimuat tanpanya, tapi standar HTML mewajibkannya dan browser menampilkan halaman dalam quirks mode. Selalu taruh <!DOCTYPE html> di baris pertama.

Apakah doctype peka huruf besar kecil?

Tidak. <!DOCTYPE html>, <!doctype html> dan <!DocType HTML> semuanya berarti sama. DOCTYPE dengan huruf besar dan html dengan huruf kecil adalah gaya yang paling umum.

Apakah DOCTYPE adalah tag HTML?

Bukan. Doctype adalah deklarasi, bukan elemen: tidak punya tag penutup, tidak bisa diberi atribut, dan tidak muncul di document.body. Di DOM, doctype adalah node DocumentType tersendiri yang bisa diakses sebagai document.doctype.

Apa doctype untuk HTML5?

<!DOCTYPE html>. HTML5 membuang identifier publik dan URL panjang dari HTML 4.01 dan XHTML, dan bentuk pendek itu adalah satu-satunya doctype yang kamu butuhkan untuk halaman baru mana pun.

Bagaimana cara memeriksa apakah halaman dalam quirks mode?

Buka console browser lalu jalankan document.compatMode. "CSS1Compat" berarti standards mode (atau limited quirks mode), "BackCompat" berarti quirks mode.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai