Che cos'è DOCTYPE?


174
  • Che cos'è DOCTYPE e perché voglio usarlo?
  • Quali sono i diversi DOCTYPE che posso usare?
  • Qual è la differenza tra la modalità standard e le stranezze e quali sono alcune stranezze che posso incontrare con DOCTYPE impostati in modo diverso?

Infine, qual è il DOCTYPE corretto che dovrei usare?


9
Questo non dovrebbe essere un wiki?
Alex

Risposte:


76

Fondamentalmente, DOCTYPE descrive l'HTML che verrà utilizzato nella tua pagina.

I browser utilizzano anche DOCTYPE per determinare come eseguire il rendering di una pagina. Non includere un DOCTYPE o includerne uno errato può attivare la modalità stranezze.

Il kicker qui è che la modalità stranezze in Internet Explorer è abbastanza diversa dalla modalità stranezze in Firefox (e altri browser); nel senso che avrai molto lavoro più difficile, cercando di assicurarti che la tua pagina venga renderizzata in modo coerente con tutti i browser se viene attivata la modalità stranezze, rispetto a quando sarà visualizzata in modalità standard.

Wikipedia ha un riepilogo più approfondito delle differenze di rendering quando si utilizzano vari DOCTYPE . XHTML è abilitato da alcuni DOCTYPE e c'è un bel po 'di dibattito sull'uso di XHTML che è ben coperto in XHTML - miti e realtà .

Esistono sottili differenze tra i diversi DOCTYPE di rendering "conformi agli standard", come il DOCTYPE HTML5 ( <!DOCTYPE html>, prima di HTML5, noto solo come "doctype skinny" che non attiva il rendering standardizzato nei browser meno recenti) e altri DOCTYPE come questo per Transizione HTML 4.01:

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

39
In questi giorni preferisco HTML5 DOCTYPE: <! DOCTYPE html> funziona in tutti i browser moderni, incluso IE6.
Walter Rumsby,

53
IE6 ∉ browser moderni

26

Il DOCTYPE indica all'utente che utilizza (browser Web, crawler Web, strumenti di convalida) quale tipo di documento è il file. Il suo utilizzo garantisce che il consumatore analizzi correttamente l'HTML come previsto.

Esistono diversi DOCTYPES diversi per HTML, XHTML e Frameset e ognuno di questi ha due modalità Strict e Transitional. Rigido afferma che il tuo markup sta usando esattamente gli standard definiti. Vedi DTD W3C pagina per ulteriori dettagli.

Quirksmode è fondamentalmente il metodo di layout dei giorni di guerra del browser in cui gli standard erano molto meno rispettati e definiti. Generalmente una pagina in modalità standard, che è valida, impaginerà in modo più coerente su vari browser, ma potrebbe non disporre di alcune funzionalità richieste. Una di queste caratteristiche è l'attributo target del tag anchor. La modalità Quirks sito è un'ottima risorsa per queste differenze.

Un ultimo pensiero è che il nuovo standard HTML5 propone di utilizzare un DOCTYPE molto semplice:

<!DOCTYPE html>

L'uso di questo DOCTYPE è un modo compatibile in avanti per specificare che le tue pagine sono in modalità standard e sono HTML. Questo è il metodo utilizzato da Google ed è ragionevolmente facile da ricordare. Consiglio di utilizzare questo DOCTYPE a meno che non preveda di utilizzare XHTML.


2
Il tag DOCTYPE HTML è? Se è così, allora perché abbiamo bisogno di questo per cominciare?
CuriousMind

2
@vipinkoul il tag DOCTYPE specifica quale tipo di documento HTML si sta inviando l'Utente-Agente. Potrebbe essere HTML o XHTML o un set di frame. E potrebbe essere HTML / XHTML / Frameset rigoroso o HTML / XHTML / Frameset di transizione. Principalmente questo influenza il modo in cui il parser reagisce quando incontra un errore.
Rob,

6

Un doctype definisce quale versione di HTML / XHTML utilizza il tuo documento. Si desidera utilizzare un doctype in modo che quando si esegue il codice tramite validatori, i validatori sappiano su quale versione di HTML / XHTML verificare. Questa pagina offre una buona panoramica:

Non dimenticare di aggiungere un tipo di documento

I comuni tipi che puoi usare sono elencati qui:

Elenco raccomandato di DTD

Il tipo di documento che dovresti seguire dipende dal codice che stai utilizzando, ma per avere un'idea, prova a eseguire il codice tramite il validatore W3C e usa il Tipo di documento menu a discesa nel menu "Altre opzioni" per provare diversi tipi di documento .

Servizio di convalida markup W3C


3

In HTML (incluso XHTML) utilizzato nelle pagine Web, DOCTYPE è una stringa che attiva una delle poche modalità del browser (modalità stranezze, modalità standard, quasi standard), a seconda dell'ortografia esatta di DOCTYPE. Vuoi usarlo per selezionare una modalità browser più adatta alla tua pagina.

Formalmente, in SGML e XML, una dichiarazione DOCTYPE è un riferimento a una definizione del tipo di documento (DTD), che specifica le regole formali di sintassi del linguaggio di markup. Nessun browser ha mai usato DTD per nulla o addirittura vi ha avuto accesso. Tuttavia, vengono utilizzati dai validatori di markup SGML e XML come W3C Markup Validator , ad eccezione della modalità HTML5. Pertanto, la scelta di DOCTYPE determina il funzionamento di un validatore se il documento gli viene inviato. Tuttavia, la modalità operativa del validatore può anche essere selezionata nella sua interfaccia utente. (I processori SGML e XML possono usare DOCTYPE anche in altri modi, ma apparentemente la domanda è intesa come limitata al contesto HTML, ai browser Web e al software strettamente correlato.)

Non esiste un elenco autorevole di DOCTYPE. Ogni specifica o bozza HTML definisce i propri DOCTYPE o DOCTYPE. L'insieme di DOCTYPE riconosciuti dai browser quando si seleziona la modalità varia in base al browser. In pratica, non vi è alcun motivo per utilizzare un DOCTYPE diverso da <DOCTYPE html> quello definito in HTML5 , sebbene HTML5 elenchi anche alcuni "DOCTYPE legacy". È possibile utilizzare quel DOCTYPE se si desidera la modalità standard (consigliata per nuove pagine) e non utilizzare DOCTYPE se si desidera la modalità stranezze (che potrebbe essere necessaria per le pagine legacy).

"Modalità standard" indica generalmente la modalità operativa in cui un browser segue HTML, CSS, DOM e altre specifiche nel miglior modo possibile. Di solito non significa piena conformità. La "modalità Quirks" è diversa nei diversi browser, ma in genere significa un tentativo di imitazione del comportamento di browser molto vecchi come IE 5. Lo scopo è di far funzionare le vecchie pagine, supponendo che possano fare affidamento su funzionalità e bug nel vecchi browser. Vedi la descrizione Cosa succede in Modalità strane? Si noti che esiste un concetto piuttosto diverso e più limitato di "modalità strane " in HTML5, che ricorda da vicino il documento chiamato Quirks Mode Living Standard .

Un problema tipico è che le larghezze degli elementi sono calcolate in modo diverso in modalità stranezze e in modalità standard. Ciò significa che il layout di una pagina può essere più o meno modificato o addirittura completamente incasinato, se una pagina progettata per funzionare in modalità strane è visualizzata in modalità standard (o viceversa).

Quindi dovresti usare <!DOCTYPE html>per nuove pagine e conservare qualunque DOCTYPE (se presente) che hai usato per vecchie pagine.

Tuttavia, la modalità Quirks significa, in alcuni browser, che molte nuove funzionalità di CSS non sono supportate. Ciò significa che se si desidera migliorare una vecchia pagina con alcune funzionalità CSS3, potrebbe essere necessario passare a un DOCTYPE che attiva la modalità standard. In tal caso, è necessario rivedere e testare la pagina per vedere se verrà eseguita in modalità standard.


Grazie per i dettagli extra, in particolare quelli: «Nessun browser ha mai usato DTD per nulla o addirittura acceduto a loro» e «non c'è motivo di usare un DOCTYPE se non <DOCTYPE html>come definito in HTML5 ».
Armfoot,

2

Doctypes indica al browser in quale lingua è scritta la pagina, sia essa HTML o XHTML. Per esempio,

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

dire al browser di rendere la pagina come HTML4 strict. I browser più vecchi utilizzavano il rendering delle pagine in modo errato e quindi i browser più recenti simulano gli errori dei browser più vecchi quando trovano un vecchio tipo di documento.

Oggi dovresti usare almeno HTML4 o XHTML migliore.

Un post di blog su doctypes è Correggi il tuo sito con il DOCTYPE giusto! (da una lista a parte ).


1

Prima di tutto non c'è un solo tipo di documento che dovresti usare, ma la maggior parte dei designer cerca di farlo funzionare con XHTML 1.0 Strict.

Un doctype non è altro che una dichiarazione di quali tag puoi usare nel tuo html (anche se i browser possono usare più o meno di ciò che è definito) Puoi effettivamente aprire il file doctype e iniziare a leggere ( XHTML 1.0 Strict )

Se non si specifica un tipo di documento, il browser farà del suo meglio per indovinare, ma non sempre raggiunge il tipo corretto.

La modalità Quirks è solo una tecnica utilizzata dai browser per essere retrocompatibile, un ottimo esempio di modalità Quirks è il modo in cui IE rende le caselle


1

Un doctype è un documento che descrive come possono apparire i contenuti di un documento simile a xhtml (come una pagina Web). Nota: questo definisce solo la sintassi di detta pagina, il rendering della pagina NON è definito dal DTD!

Ad esempio, un tipo di documento potrebbe definire l' <table>aspetto del tag - quali attributi accetta e quali valori / tipi di valore sono accettati per ciascun attributo. Pensalo come un lessico per la tua pagina web attuale.

Wikipedia ha una pagina informativa sui vari Doctype che sono di uso comune. Intendiamoci, non c'è niente che ti impedisce di creare il tuo documento personale. È probabile, tuttavia, che il browser probabilmente non sappia come eseguire il rendering del documento.

Quale DTD usare dipende da cosa stai per scrivere. XHTML ha un DTD completamente diverso rispetto all'HTML, per esempio.


1

Sul Web, un doctype non fa altro che dire al browser se si desidera la modalità standard, quasi standard o stranezze.

Ciò che cambia in modalità strane dipende dal browser: Firefox, Opera, Safari e Chrome implementano una serie limitata di stranezze, come rimuovere lo spazio per i discendenti di testo in codice come <table><tr><td><img></td></tr></table>(soluzione:) td img { vertical-align:bottom; }. IE, d'altra parte, ritorna al motore di rendering in IE5.5. Ciò significa che non sarai in grado di utilizzare nessuna delle nuove funzionalità implementate dal 2000.

Per attivare la modalità standard, suggerisco di utilizzare il doctype HTML5 <doctype html>, poiché è il più facile da ricordare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.