O que é DOCTYPE?

174
  • O que é o DOCTYPE e por que quero usá-lo?
  • Quais são os diferentes DOCTYPEs que posso usar?
  • Qual é a diferença entre os padrões e o modo peculiares, e quais são algumas peculiaridades que eu posso encontrar com DOCTYPEs definidos de maneira diferente?

Por fim, qual é o DOCTYPE adequado que devo usar?

Prumo
fonte
9
Isso não deveria ser um wiki?
Alex Alex

Respostas:

76

Basicamente, o DOCTYPE descreve o HTML que será usado na sua página.

Os navegadores também usam o DOCTYPE para determinar como renderizar uma página. Não incluir um DOCTYPE ou incluir um incorreto pode ativar o modo peculiares.

O exemplo aqui é que o modo peculiar no Internet Explorer é bem diferente do modo peculiar no Firefox (e em outros navegadores); o que significa que você terá um trabalho muito mais difícil, tentando garantir que sua página seja renderizada de forma consistente com todos os navegadores se o modo quirks for acionado, do que você terá se for renderizado no modo padrão.

A Wikipedia tem um resumo mais detalhado das diferenças de renderização ao usar vários DOCTYPEs . O XHTML é ativado por alguns DOCTYPEs, e há um pouco de debate sobre o uso do XHTML, que é bem coberto pelo XHTML - mitos e realidade .

Existem diferenças sutis entre os DOCTYPEs de renderização "compatíveis com os padrões", como o DOCTYPE HTML5 ( <!DOCTYPE html>antes do HTML5, conhecido apenas como "tipo de documento básico", que não aciona a renderização padronizada em navegadores antigos) e outros DOCTYPEs, como este para Transição HTML 4.01:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Walter Rumsby
fonte
39
Atualmente, eu prefiro o DOCTYPE HTML5: <! DOCTYPE html> ele funciona em todos os navegadores modernos, incluindo o IE6.
Walter Rumsby
53
IE6 ∉ navegadores modernos
26

O DOCTYPE informa ao agente do usuário consumidor (navegadores da web, rastreadores da web, ferramentas de validação) que tipo de documento é o arquivo. A sua utilização garante que o consumidor analise corretamente o HTML conforme pretendido.

Existem vários DOCTYPES para HTML, XHTML e Framesets e cada um deles possui dois modos Estrito e Transitório. Estrito diz que sua marcação está usando exatamente os padrões definidos. Veja a página W3C DTDs para mais detalhes.

Quirksmode é basicamente o método de layout dos dias de guerra do navegador, quando os padrões eram muito menos respeitados e definidos. Geralmente, uma página no modo de padrões, que é válida, terá um layout mais consistente em vários navegadores, mas poderá não ter certos recursos necessários. Um desses recursos é o atributo de destino da marca âncora. O site Quirksmode é um ótimo recurso para essas diferenças.

Um pensamento final é que o novo padrão HTML5 propõe o uso de um DOCTYPE muito simples:

<!DOCTYPE html>

O uso deste DOCTYPE é uma maneira compatível com a frente de especificar que suas páginas estão no modo padrão e são HTML. Esse é o método usado pelo Google e é razoavelmente fácil de lembrar. Eu recomendo usar este DOCTYPE, a menos que você planeje usar XHTML.

Roubar
fonte
2
A tag DOCTYPE HTML é? Se sim, então por que precisamos disso para começar?
CuriousMind
2
@vipinkoul a tag DOCTYPE especifica que tipo de documento HTML você está enviando ao User-Agent. Pode ser HTML ou XHTML ou um conjunto de quadros. E poderia ser HTML estrito / XHTML / Frameset ou Transitional HTML / XHTML / Frameset. Isso afeta principalmente como o analisador reage quando encontra um erro.
Rob
6

Um doctype define qual versão do HTML / XHTML seu documento usa. Você deseja usar um doctype para que, ao executar seu código por meio de validadores, os validadores saibam qual versão do HTML / XHTML verificar. Esta página fornece uma boa visão geral:

Não se esqueça de adicionar um doctype

Os doctypes comuns que você pode usar estão listados aqui:

Lista recomendada de DTDs

Qual o tipo de documento que você deve seguir depende do código que está usando, mas para ter uma idéia, tente executar o código através do validador W3C e use o menu suspenso Tipo de documento no menu "Mais opções" para experimentar diferentes tipos de documento .

Serviço de validação de marcação W3C


fonte
3

No HTML (incluindo XHTML) usado nas páginas da web, o DOCTYPE é uma string que aciona um dos poucos modos do navegador (modo quirks, modo padrão, modo quase padrão), dependendo da ortografia exata do DOCTYPE. Você deseja usá-lo para selecionar um modo de navegador mais adequado à sua página.

Formalmente, em SGML e XML, uma declaração DOCTYPE é uma referência a uma Definição de tipo de documento (DTD), que especifica as regras formais de sintaxe da linguagem de marcação. Nenhum navegador já usou DTDs para qualquer coisa ou até mesmo os acessou. No entanto, eles são usados ​​por validadores de marcação SGML e XML, como o W3C Markup Validator , exceto no modo HTML5. Portanto, a escolha de DOCTYPE determina como um validador funciona se o documento for enviado a ele. No entanto, o modo de operação do validador também pode ser selecionado em sua interface com o usuário. (Os processadores SGML e XML também podem usar DOCTYPEs de outras formas, mas a questão aparentemente se limita ao contexto HTML e aos navegadores da Web e softwares relacionados.)

Não existe uma lista autorizada de DOCTYPEs. Cada especificação ou rascunho HTML define seu próprio DOCTYPE, ou DOCTYPEs. O conjunto de DOCTYPEs reconhecidos pelos navegadores ao selecionar o modo varia de acordo com o navegador. Na prática, não há razão para usar um DOCTYPE diferente do <DOCTYPE html> definido no HTML5 , embora o HTML5 também liste alguns "DOCTYPEs herdados". Você pode usar esse DOCTYPE se desejar o modo padrão (recomendado para novas páginas) e não usar o DOCTYPE se desejar o modo quirks (que pode ser necessário para páginas herdadas).

“Modo Standards” geralmente significa o modo de operação em que um navegador segue HTML, CSS, DOM e outras especificações da melhor maneira possível. Geralmente, isso não significa conformidade total. O "modo Quirks" é diferente em navegadores diferentes, mas geralmente significa uma tentativa de imitar o comportamento de navegadores muito antigos, como o IE 5. O objetivo é manter as páginas antigas funcionando, supondo que elas possam confiar em recursos e bugs no navegador. navegadores antigos. Veja a descrição O que acontece no modo Quirks? Observe que existe um conceito bastante diferente e mais limitado de "modo quirks" no HTML5, que se assemelha muito ao documento chamado Quirks Mode Living Standard .

Um problema típico é que as larguras dos elementos são calculadas de maneira diferente no modo quirks e no modo standard. Isso significa que o layout de uma página pode ser mais ou menos alterado ou até totalmente confuso, se uma página projetada para funcionar no modo quirks for visualizada no modo padrão (ou vice-versa).

Portanto, você deve usar <!DOCTYPE html>para novas páginas e manter o DOCTYPE (se houver) que estiver usando para páginas antigas.

No entanto, o modo quirks significa, em alguns navegadores, que muitos novos recursos do CSS não são suportados. Isso significa que, se você deseja aprimorar uma página antiga com algum recurso CSS3, pode ser necessário alternar para um DOCTYPE que aciona o modo de padrões. Nesse caso, você precisa revisar e testar a página para ver se ela será executada no modo de padrões.

Jukka K. Korpela
fonte
Graças para os detalhes extra, especialmente essas: «Nenhum navegador já usou DTDs para qualquer coisa ou mesmo acessada los» e «não há nenhuma razão para usar um DOCTYPE que não seja <DOCTYPE html>como definido no HTML5 ».
Armfoot
2

Os tipos de documento informam ao navegador em que idioma a página está escrita, seja HTML ou XHTML. Por exemplo,

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

diga ao navegador para renderizar a página como HTML4 strict. Navegadores mais antigos usados ​​para renderizar páginas incorretamente e, portanto, navegadores mais novos simulam erros dos navegadores mais antigos quando encontram um tipo de documento antigo.

Hoje você deve usar pelo menos HTML4 ou XHTML melhor.

Uma entrada de blog sobre doctypes é Corrija seu site com o DOCTYPE certo! (de A List Apart ).

Georg Schölly
fonte
1

Antes de tudo, não há um tipo de documento que você deva usar, mas a maioria dos designers tenta fazê-lo funcionar no XHTML 1.0 Strict.

Um doctype nada mais é do que uma declaração de quais tags você pode usar no seu html (embora os navegadores possam usar mais ou menos do que o definido). Na verdade, você pode abrir o arquivo doctype e começar a ler ( XHTML 1.0 Strict )

Se você não especificar um tipo de documento, o navegador tentará adivinhar, mas nem sempre atingirá o tipo correto.

O modo Quirks é apenas uma técnica usada pelos navegadores para ser compatível com versões anteriores. Um ótimo exemplo do modo Quirks é como o IE renderiza caixas

Ólafur Waage
fonte
1

Um doctype é um documento que descreve como o conteúdo de um documento semelhante a xhtml pode se parecer (como uma página da web). Nota: isso define apenas a sintaxe da página, a renderização da página NÃO é definida pelo DTD!

Por exemplo, um doctype pode definir a <table>aparência da tag - quais atributos ele aceita e quais valores / tipos de valor são aceitos para cada atributo. Pense nisso como um léxico para sua página da web atual.

A Wikipedia possui uma página informativa sobre os vários Doctypes que são de uso comum. Lembre-se - não há nada que o impeça de criar seu próprio tipo de documento. As chances são, no entanto, de que o navegador provavelmente não saiba como renderizar seu documento.

Qual DTD usar depende do que você vai escrever. XHTML tem um DTD totalmente diferente do HTML, por exemplo.

Henrik Paul
fonte
1

Na web, um doctype não faz nada além de informar ao navegador se você deseja o modo padrões, quase padrões ou peculiaridades.

O que muda no modo peculiares depende do navegador: Firefox, Opera, Safari e Chrome implementam um conjunto limitado de peculiaridades, como remover o espaço para descendentes de texto no código como <table><tr><td><img></td></tr></table>(solução td img { vertical-align:bottom; }:). O IE, por outro lado, reverte para o mecanismo de renderização no IE5.5. Isso significa que você não poderá usar nenhum dos novos recursos implementados desde 2000.

Para ativar o modo de padrões, sugiro usar o doctype HTML5 <doctype html>, pois é o mais fácil de lembrar.

Ms2ger
fonte