En HTML, le DOCTYPE
doit venir en premier, suivi d'un seul <html>
élément, qui doit contenir un <head>
élément contenant un <title>
élément, suivi d'un <body>
élément. Voir la description de la structure globale d'un document HTML en HTML 4.01 et le brouillon HTML5 ; les besoins réels sont pour la plupart les mêmes autres que le DOCTYPE
, mais ils sont décrits différemment.
Les balises réelles ( <html>
, </html>
, <head>
, etc.) sont facultatifs; les éléments seront créés automatiquement si les balises n'existent pas. <title>
est la seule balise requise en HTML. Le document HTML 4.01 valide le plus court (au moins, que je pourrais générer) est (nécessite un <p>
car il doit y avoir quelque chose dans le <body>
pour être valide):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"><title></title><p>
Et le document HTML5 valide le plus court:
<!DOCTYPE html><title></title>
Notez qu'en XHTML, toutes les balises doivent être spécifiées explicitement; aucun élément ne sera inséré implicitement.
Les navigateurs effectuent le reniflement du type de contenu dans certaines circonstances pour déterminer le type d'une ressource qui n'a pas été spécifié à l'aide d'un Content-Type
en-tête HTTP, ainsi que le reniflage du codage de caractères si l'en- Content-Type
tête n'a pas été fourni ou n'inclut pas un charset
(vous devriez généralement essayer pour inclure ces en-têtes et assurez-vous qu'ils sont corrects, mais dans certaines circonstances, vous ne pouvez pas, comme les fichiers locaux non transférés via HTTP). Cependant, ils ne reniflent qu'un nombre limité d'octets au début du document à ces fins, donc tout ce qui est destiné à affecter le reniflage de contenu ou le reniflage de caractères doit être proche du début du document.
Pour cette raison, HTML5 spécifie que toute meta
balise qui est utilisée pour spécifier le jeu de caractères (soit <meta http-equiv="Content-type" content="text/html; charset=...">
ou simplement <meta charset=...>
) doit être dans les 1024 premiers octets du fichier pour prendre effet. Donc, si vous prévoyez d'inclure des informations de codage de caractères dans votre document, vous devez placer la balise tôt dans le fichier, peut-être même avant l' <title>
élément. Mais rappelez-vous que cette balise n'est pas nécessaire si vous spécifiez correctement un en- Content-type
tête.
En CSS, les déclarations de style ultérieures ont priorité sur les précédentes , toutes choses étant égales par ailleurs. Ainsi, vous devez généralement mettre les feuilles de style les plus génériques qui peuvent être remplacées plus tôt, et les feuilles de style plus spécifiques plus tard.
Pour des raisons de performances, il peut être judicieux de placer les scripts en bas de la page, juste avant le </body>
, car le chargement des scripts bloque le rendu de la page.
De toute évidence, les <script>
balises doivent être ordonnées de sorte que les scripts qui dépendent de chaque ordre aient les dépendances chargées en premier.
Dans l'ensemble, à part les contraintes que j'ai déjà spécifiées, l'ordre des balises à l'intérieur <head>
ne devrait pas avoir trop d'importance, à part pour la lisibilité. J'ai tendance à aimer voir le <title>
vers le haut et à placer les autres <meta>
balises dans une sorte d'ordre logique.
La plupart du temps, l'ordre dans lequel vous devez placer les éléments dans le corps d'un document HTML doit être l'ordre dans lequel ils doivent être affichés ou l'ordre dans lequel ils doivent être consultés. Vous pouvez utiliser CSS pour réorganiser les choses, mais les lecteurs d'écran liront généralement les choses dans l'ordre source, les index de recherche extrairont les choses dans l'ordre source, et ainsi de suite.