peut utiliser quoi que ce soit dans n'importe quel ordre? est-ce que le placement <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
est important avant<title>
c'est le plus utilisé, est-ce le meilleur moyen?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Title Goes Here</title>
<link rel="stylesheet" href="http://sstatic.net/so/all.css?v=5912">
<link rel="shortcut icon" href="http://sstatic.net/so/favicon.ico">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("#wmd-input").focus();
$("#title").focus();
$("#revisions-list").change(function() { window.location = '/posts/1987065/edit/' + $(this).val(); });
});
</script>
</head>
<body>
<p>This is my web page</p>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools.js"></script>
</body>
</html>
ce site http://stackoverflow.com n'a aucun encodage et<meta>
J'utilise un CMS qui a un composant SEO qui ajoute tout <meta>
pour le référencement après tout js et css. des dossiers. Le placement de tous les éléments dans n'importe quel ordre qui est autorisé peut-il <head>
affecter la compatibilité et le codage des documents?
<meta>
balise est une solution de contournement pour ces cas, mais pas essentielle.Réponses:
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 leDOCTYPE
, 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 uncharset
(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.
la source
iframe
et qui n'auront jamais de titre visible. ), mais ils ont décidé de ne pas changer cela cette fois-ci.<script>
balises avec un attributasync
ou . Voir stackoverflow.com/questions/436411/…defer
<head>
C'est le modèle que j'utilise, supprimez simplement ce dont vous n'avez pas besoin pour un nouveau projet.
<!doctype html> <html class="no-js" lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title></title> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="author" content=""> <meta name="robots" content="index, follow"> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="default"> <link rel="stylesheet" href="scss/style.css" /> <!-- http://realfavicongenerator.net/ --> <meta property="fb:page_id" content=""> <meta property="og:title" content=""> <meta property="og:image" content=""> <meta property="og:description" content=""> <meta property="og:url" content=""> <meta property="og:site_name" content=""> <meta property="og:type" content="website"> <meta name="twitter:card" content="summary"> <meta name="twitter:url" content=""> <meta name="twitter:title" content=""> <meta name="twitter:description" content=""> <meta name="twitter:image" content=""> <meta name="twitter:site" content=""> <script src="js/vendor/modernizr.js"></script> </head> <body> </body> </html>
la source
<html class="default">
méchant?En ajoutant quelques suggestions de performances à la réponse de Brian, la priorité la plus élevée devrait logiquement être les choses qui devront être téléchargées, afin que le navigateur puisse commencer à les télécharger dès que possible, et les choses qui affecteront la présentation de la page. Alors je suggérerais:
Vous pouvez également envisager d'intégrer tout ce que CSS et JS sont chargés en tête, surtout si son petit script / feuille externe est peu susceptible d'être mis en cache selon le profil de votre visiteur typique. Et si vous le faites en ligne, vous voudrez idéalement le compresser.
Dernière chose: l'utilisateur doit attendre la tête - et toutes les ressources de blocage qu'il charge - il est donc préférable d'en mettre autant que possible dans le corps ou le pied de page.
la source
Selon W3 devrait être:
la source
La plupart des navigateurs ne se soucient pas de la façon dont vous commandez vos éléments, mais vous devez toujours spécifier en
charset
premier.Les meilleures pratiques pour IE7 + exigent que les
charset
,X-UA-Compatible
et lesbase
déclarations se produisent avant toute autre chose dans lehead
, sinon le navigateur recommence et re-Parsis tout ce qui est venu avant.la source
Vous voulez d'abord votre type de contenu car il indique l'encodage des caractères, sinon s'il arrive plus tard, certains navigateurs tentent de deviner l'encodage. (Je ne me souviens pas des détails, mais je pense que IE devinera s'il ne trouve pas d'encodage dans les 75 premiers caractères du document?)
La plupart des serveurs Web envoient l'encodage dans les en-têtes HTTP, mais si un utilisateur enregistre votre page, les en-têtes ne sont pas enregistrés avec elle.
Je mettrais les références CSS en deuxième pour que le navigateur les télécharge dès que possible.
JavaScript Je ne mettrais pas dans la tête, il devrait aller au bas de vos pages car leur téléchargement bloque le rendu des pages.
la source
IIRC, certains navigateurs rechargeront le document en rencontrant un
content-type
élément. Donc, cet élément devrait probablement venir en premier dans l'head
élément du document.la source