DOCTYPE nedir?


174
  • DOCTYPE nedir ve neden kullanmak istiyorum?
  • Kullanabileceğim farklı DOCTYPE'ler nelerdir?
  • Standartlar ve tuhaflıklar modu arasındaki fark nedir ve farklı ayarlanmış DOCTYPE'lerle karşılaşabileceğim bazı tuhaflıklar nelerdir?

Son olarak, kullanmam gereken uygun DOCTYPE nedir?


9
Bu bir wiki olmamalı mı?
Alex

Yanıtlar:


76

Temel olarak, DOCTYPE, sayfanızda kullanılacak HTML'yi açıklar.

Tarayıcılar ayrıca bir sayfanın nasıl oluşturulacağını belirlemek için DOCTYPE'ı kullanır. Bir DOCTYPE dahil edilmemesi veya yanlış bir dahil edilmemesi, gariplik modunu tetikleyebilir.

Burada dikkat çeken şey, Internet Explorer'daki gariplik modunun Firefox'taki (ve diğer tarayıcılarda) gariplik modundan oldukça farklı olmasıdır; başka bir deyişle, daha ilginç bir işe sahip olursunuz , tuhaflıklar modu tetiklenirse sayfanızın tüm tarayıcılarla tutarlı bir şekilde oluşturulmasını sağlamaya çalışırsınız;

Wikipedia, çeşitli DOCTYPE'leri kullanırken oluşturmadaki farklılıkların daha ayrıntılı bir özetine sahiptir . XHTML belirli DOCTYPE'ler tarafından etkinleştirilir ve XHTML'nin - mitler ve gerçeklik - iyi kapsanan XHTML kullanımı hakkında oldukça fazla tartışma vardır .

HTML5 DOCTYPE (HTML5'ten <!DOCTYPE html>önce yalnızca eski tarayıcılarda standartlaştırılmış oluşturmayı tetiklemeyen "skinny doctype" olarak bilinir) ve bunun için bunun gibi diğer DOCTYPE'ler gibi farklı "standartlara uygun" oluşturma DOCTYPE'leri arasında küçük farklılıklar vardır . HTML 4.01 geçişi:

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

39
Bu günlerde HTML5 DOCTYPE: <! DOCTYPE html> IE6 dahil tüm modern tarayıcılarda çalışıyor.
Walter Rumsby

53
IE6 ∉ modern tarayıcılar

26

DOCTYPE, tüketen kullanıcı aracısına (web tarayıcıları, web tarayıcıları, doğrulama araçları) dosyanın ne tür bir belge olduğunu söyler. Bunu kullanmak, tüketicinin HTML'yi istediğiniz gibi doğru şekilde ayrıştırmasını sağlar.

HTML, XHTML ve Çerçeve Kümeleri için birkaç farklı DOCTYPES vardır ve bunların her birinin Sıkı ve Geçişli iki modu vardır. Sıkı, işaretlemenizin tanımlanan standartları tam olarak kullandığını söylüyor. Daha fazla bilgi için W3C DTD'ler sayfasına bakın.

Quirksmode temel olarak standartlara daha az saygı duyulduğu ve tanımlandığı tarayıcı savaşları günlerinden itibaren yerleşim yöntemidir. Genellikle geçerli olan bir standart modu sayfası, çeşitli tarayıcılarda daha tutarlı bir şekilde düzenlenir, ancak gereksinim duyduğunuz belirli özelliklerden yoksun olabilir. Bu özelliklerden biri, bağlantı etiketinin hedef özelliğidir. Quirksmode sitesi bu farklılıkların büyük bir kaynaktır.

Son bir düşünce, yeni HTML5 standardının çok basit bir DOCTYPE kullanmayı önermesidir:

<!DOCTYPE html>

Bu DOCTYPE'ın kullanılması, sayfalarınızın standart modunda ve HTML olduğunu belirtmek için ileri uyumlu bir yöntemdir. Bu, Google'ın kullandığı yöntemdir ve hatırlanması oldukça kolaydır. XHTML kullanmayı düşünmüyorsanız bu DOCTYPE ürününü kullanmanızı öneririm.


2
DOCTYPE HTML etiketi midir? Öyleyse, neden başlamak için buna ihtiyacımız var?
CuriousMind

2
@vipinkoul DOCTYPE etiketi, User-Agent'a ne tür bir HTML belgesi gönderdiğinizi belirtir. HTML veya XHTML veya bir Çerçeve kümesi olabilir. Sıkı HTML / XHTML / Çerçeve Kümesi veya Geçici HTML / XHTML / Çerçeve Kümesi olabilir. Çoğunlukla bu, ayrıştırıcının bir hatayla karşılaştığında nasıl tepki vereceğini etkiler.
Rob

6

Bir doküman türü, belgenizin hangi HTML / XHTML sürümünü kullandığını tanımlar. Kodunuzu doğrulayıcılar aracılığıyla çalıştırdığınızda doğrulayıcılar hangi HTML / XHTML sürümünün kontrol edileceğini bilirler. Bu sayfa iyi bir genel bakış sunar:

Bir doküman türü eklemeyi unutmayın

Kullanabileceğiniz yaygın dokümanlar burada listelenmiştir:

DTD'lerin önerilen listesi

Hangi dokümanı kullanmanız gerektiği, kullandığınız koda bağlıdır, ancak bir fikir edinmek için kodunuzu W3C geçerlilik denetleyicisinden çalıştırmayı deneyin ve farklı dokümanları denemek için "Diğer Seçenekler" menüsündeki Doküman Türü açılır menüsünü kullanın .

W3C İşaretleme Doğrulama Hizmeti


3

Web sayfalarında kullanılan HTML'de (XHTML dahil), DOCTYPE, DOCTYPE'ın tam yazımına bağlı olarak birkaç tarayıcı modundan (tuhaf mod, standart mod, neredeyse standart mod) birini tetikleyen bir dizedir. Sayfanıza en uygun tarayıcı modunu seçmek için kullanmak istersiniz.

Resmi olarak, SGML ve XML'de, bir DOCTYPE bildirimi, biçimlendirme dilinin resmi sözdizimi kurallarını belirten Belge Türü Tanımı'na (DTD) yapılan bir başvurudur. Hiçbir tarayıcı DTD'leri hiçbir şey için kullanmamıştır ve hatta bunlara erişmemiştir. Bununla birlikte, HTML5 modu hariç , W3C İşaretleme Doğrulayıcı gibi SGML ve XML işaretleme doğrulayıcıları tarafından kullanılırlar . Bu nedenle, DOCTYPE seçimi, belgeye gönderilirse bir doğrulayıcının nasıl çalışacağını belirler. Bununla birlikte, doğrulayıcı çalışma modu kullanıcı arayüzünden de seçilebilir. (SGML ve XML işlemcileri DOCTYPE'leri farklı şekillerde de kullanabilirler, ancak sorunun görünüşe göre HTML bağlamı ve web tarayıcıları ve yakından ilişkili yazılımlarla sınırlı olması amaçlanmaktadır.)

DOCTYPE'lerin yetkili bir listesi yok. Her HTML belirtimi veya taslağı kendi DOCTYPE veya DOCTYPE'lerini tanımlar. Mod seçerken tarayıcılar tarafından tanınan DOCTYPE kümesi tarayıcıya göre değişir. Uygulamada, <DOCTYPE html> HTML5'te tanımlanmış olandan başka bir DOCTYPE kullanmak için hiçbir neden yoktur , ancak HTML5 birkaç "eski DOCTYPE" de listelemektedir. Standartlar modunu (yeni sayfalar için önerilir) istiyorsanız bu DOCTYPE'ı kullanabilir ve tuhaflıklar modu (eski sayfalar için ihtiyacınız olabilir) istiyorsanız DOCTYPE'ı kullanamazsınız.

“Standartlar modu” genellikle bir tarayıcının HTML, CSS, DOM ve diğer özellikleri en iyi şekilde takip ettiği çalışma modu anlamına gelir. Genellikle tam uyum anlamına gelmez. "Tuhaflıklar modu" farklı tarayıcılarda farklıdır, ancak genellikle IE 5 gibi çok eski tarayıcıların davranışlarını taklit etme girişimi anlamına gelir. Amaç, eski sayfaların, eski tarayıcılar. Açıklamaya bakın Quirks Modunda ne olur? HTML5'te, Quirks Mode Living Standard adlı belgeye çok benzeyen oldukça farklı, daha sınırlı bir “tuhaflık modu” kavramına dikkat edin .

Tipik bir sorun, eleman genişliklerinin tuhaflıklar modunda ve standartlar modunda farklı hesaplanmasıdır. Bu, tuhaflıklar modunda çalışmak üzere tasarlanmış bir sayfa standart modda (veya tam tersi) görüntüleniyorsa, bir sayfanın düzeninin az çok değişebileceği veya tamamen bozulabileceği anlamına gelir.

Bu nedenle <!DOCTYPE html>yeni sayfalar için kullanmalı ve eski sayfalar için kullandığınız DOCTYPE'ı (varsa) saklamalısınız.

Ancak, tuhaflıklar modu, bazı tarayıcılarda CSS'nin birçok yeni özelliğinin desteklenmediği anlamına gelir. Bu, eski bir sayfayı bazı CSS3 özelliğiyle geliştirmek istiyorsanız, standart modunu tetikleyen bir DOCTYPE'a geçmek gerekebileceği anlamına gelir. Bu durumda, standart modda çalışıp çalışmayacağını görmek için sayfayı gözden geçirip test etmeniz gerekir.


İlave ayrıntılar, özel olarak bu olanları için teşekkürler: «tarayıcı yok hiç bir şey DTD'ler kullandı, hatta bunları erişilen» «dışındaki bir DOCTYPE kullanmak için hiçbir neden yoktur ve <DOCTYPE html>sıra HTML5 tanımlanan ».
Armfoot

2

Dokümanlar tarayıcıya HTML veya XHTML olsun, sayfanın hangi dilde yazıldığını söyler. Örneğin,

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

tarayıcıya sayfayı görüntülemesini söyleyin HTML4 strict. Eski tarayıcılar sayfaları yanlış göstermek için kullanılır ve bu nedenle yeni tarayıcılar eski bir dokümanı bulduğunda eski tarayıcıların hatalarını simüle eder.

Bugün en az HTML4 veya daha iyi XHTML kullanmalısınız.

Doctypes ile ilgili bir blog girişi Sitenizi Doğru DOCTYPE ile Fix! ( A List Apart'tan ).


1

Her şeyden önce kullanmanız gereken tek bir belge yok, ancak çoğu tasarımcı XHTML 1.0 Strict'de çalışmasını sağlamaya çalışıyor.

Bir doküman türü, html'nizde hangi etiketleri kullanabileceğinizin bildirilmesinden başka bir şey değildir (tarayıcılar tanımlanmış olandan daha fazla veya daha azını kullanabilir) Aslında doküman türü dosyasını açabilir ve okumaya başlayabilirsiniz ( XHTML 1.0 Strict )

Bir doküman türü belirtmezseniz, tarayıcı tahmin etmek için elinden gelenin en iyisini yapar, ancak her zaman doğru türe vurmaz.

Quirks modu sadece tarayıcılar tarafından geriye dönük olarak uyumlu bir tekniktir, quirks moduna harika bir örnek IE'nin kutuları nasıl oluşturduğudur


1

Doküman, xhtml benzeri bir dokümanın içeriğinin nasıl görünebileceğini (bir web sayfası gibi) açıklayan bir dokümandır. Not: Bu yalnızca söz konusu sayfanın sözdizimini tanımlar, sayfanın oluşturulması DTD tarafından TANIMLANMAZ!

Örneğin, bir doküman <table>türü, -tag öğesinin nasıl görünebileceğini - hangi özellikleri kabul ettiğini ve her özellik için hangi değerlerin / değer türlerinin kabul edileceğini tanımlayabilir. Mevcut web sayfanız için bir sözlük olarak düşünün.

Vikipedi ortak kullanımda olan çeşitli Dokümanlarda bilgilendirici bir sayfası vardır. Dikkat edin, kendi doktuğunuzu yaratmanızı engelleyen hiçbir şey yoktur. Bununla birlikte, tarayıcının muhtemelen belgenizi nasıl oluşturacağınızı bilmemesi ihtimali vardır.

Hangi DTD'nin kullanılacağı, ne yazacağınıza bağlıdır. Örneğin XHTML, HTML'den tamamen farklı bir DTD'ye sahiptir.


1

Web'de, bir doktrin tarayıcıya standartlar, neredeyse standartlar veya tuhaflıklar modu istediğinizi söylemez.

Tuhaflıklar modundaki değişiklikler tarayıcıya bağlıdır: Firefox, Opera, Safari ve Chrome, koddaki metin alçaltıcıları için alan <table><tr><td><img></td></tr></table>(çözüm :) gibi alanı kaldırmak gibi sınırlı bir tuhaflık seti uygular td img { vertical-align:bottom; }. IE, IE5.5'teki oluşturma motoruna geri döner. Bu, 2000'den bu yana uygulanan yeni özelliklerin hiçbirini kullanamayacağınız anlamına gelir .

Standartlar modunu tetiklemek <doctype html>için hatırlanması en kolay olan HTML5 dokümanı kullanmanızı öneririm .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.