Una de las preguntas que me hace la gente cuando realiza desarrollo web es relativa al HTML5 doctype y los doctypes existentes. Preguntas, por ejemplo, sobre ¿cuál es el doctype en HTML5? ¿Para qué sirve el doctype? ¿qué usos se hace el navegador web sobre el doctype?
¿Para qué sirve el doctype?
Lo primero, antes de entrar en el detalle del HTML5 doctype es saber para qué sirve el doctype dentro de un documento HTML.
El doctype es una declaración que se coloca al inicio de un documento HTML y tiene como función principal indicar al navegador web qué versión de HTML se está utilizando. Esto permite que el navegador web sepa cómo debe interpretar y renderizar el código HTML que contiene el documento.
“Modo quirks” en los navegadores
Sin esta declaración, los navegador web podrían entrar en «modo quirks» o modo de compatibilidad, lo que podría causar inconsistencias en la visualización de la página web.
El «modo quirks» (también conocido como «modo de compatibilidad») es un modo de renderizado especial que utilizan los navegador web para mantener la compatibilidad con páginas web antiguas. Cuando un navegador web entra en “modo quirks”, emula el comportamiento de navegadores web antiguos, específicamente aquellos anteriores al año 2000 entre los que nos encontrábamos el mítico Internet Explorer 5.
Este “modo quirks” afecta principalmente a:
- El modelo de caja CSS (box model)
- El manejo de dimensiones en elementos en línea
- La interpretación de ciertas propiedades CSS
- El procesamiento de algunos elementos HTML
Por esta razón, es crucial incluir siempre el doctype correcto al inicio de nuestros documentos HTML para asegurar que el navegador web opere en «modo estándar» y renderice la página de manera consistente según las especificaciones actuales de HTML y CSS.
De dónde venimos en la definición de doctypes
Antes de entrar a revisar cual es la definición formal del HTML5 vamos echar la vista atrás y ver de dónde venimos en la definición de doctypes. Hasta la versión de HTML5 teníamos diferentes doctypes para definir los tipos de documentos en HTML. Así nos podíamos encontrar:
- HTML 4.01 transitorio, que permitía el uso de elementos y atributos obsoletos para mantener la compatibilidad con versiones anteriores
- HTML 4.01 frameset, diseñado específicamente para documentos que utilizaban marcos (frames) para dividir la ventana del navegador en múltiples secciones
- HTML Estricto, que exigía el cumplimiento riguroso de las especificaciones HTML 4.01 y eliminaba todos los elementos y atributos obsoletos
Así nos podíamos encontrar las siguientes definiciones en los documentos. Para los estrictos:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "<http://www.w3.org/TR/html4/strict.dtd>">
Para los transitorios:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<http://www.w3.org/TR/html4/loose.dtd>">
Y para aquellos que tienen frames:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN""<http://www.w3.org/TR/html4/frameset.dtd>">
HTML5 Doctype
Pero al final llegó la especificación actual que es HTML5 simplificando la especificación del documento HTML dejando una sencilla definición en su cabecera en la que simplemente ponemos el elemento doctype
con una exclamación delante, seguido de la palabra html. Todo ello dentro de los típicos símbolos menor y mayor de HTML que nos sirven para definir elementos.
Por lo tanto, el inicio de nuestros documentos web tendrán el html5 doctype definido de la siguiente manera:
<!doctype html>
Si nos fijamos en las anteriores definiciones se especificaba el DTD (Document Type Definition), que es un archivo que define la estructura y las reglas del documento HTML. Si bien, HTML5 ya se ha eliminado esa referencia.
Futuro del Doctype en HTML
Ya que sabemos todo lo relativo al HTML5 doctype vamos a hablar un poco sobre su futuro. El doctype es un elemento que seguirá siendo fundamental en las futuras versiones de HTML. Si bien su sintaxis se ha simplificado ya tanto que no tiene pinta que vaya a cambiar en el futuro. Si bien seguirá siendo fundamental para poder indicar al navegador web que lo que se encuentra para poder renderizarlo es un documento HTML. Los grupos de trabajo de W3C y WHATWG mantienen el compromiso de conservar esta declaración como parte esencial del estándar HTML.