¿Puedes usar cualquier cosa en cualquier orden? ¿ <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
Es importante colocar antes<title>
esta es la más utilizada, ¿es la mejor manera?
<!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>
este sitio http://stackoverflow.com no tiene ninguna codificación y<meta>
Utilizo un CMS que tiene un componente de SEO que agrega todos <meta>
para SEO después de todo js y css. archivos. ¿Puede la colocación de cualquier elemento en cualquier orden permitido <head>
afectar la compatibilidad y codificación del documento?
<meta>
etiqueta es una solución alternativa para esos casos, pero no es esencial.Respuestas:
En HTML,
DOCTYPE
debe ir primero, seguido de un solo<html>
elemento, que debe contener un<head>
elemento que contenga un<title>
elemento, seguido de un<body>
elemento. Vea la descripción de la estructura global de un documento HTML en HTML 4.01 y el borrador de HTML5 ; los requisitos reales son en su mayoría los mismos que no seanDOCTYPE
, pero se describen de manera diferente.Las etiquetas reales (
<html>
,</html>
,<head>
, etc.) son opcionales; los elementos se crearán automáticamente si las etiquetas no existen.<title>
es la única etiqueta obligatoria en HTML. El documento HTML 4.01 válido más corto (al menos, que podría generar) es (necesita un<p>
porque debe haber algo en el<body>
para ser válido):<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><title></title><p>
Y el documento HTML5 válido más corto:
<!DOCTYPE html><title></title>
Tenga en cuenta que en XHTML, todas las etiquetas deben especificarse explícitamente; no se insertarán elementos implícitamente.
Los navegadores realizan un rastreo de tipo de contenido en algunas circunstancias para determinar el tipo de recurso que no se ha especificado mediante un
Content-Type
encabezado HTTP, y también un rastreo de codificación de caracteres si elContent-Type
encabezado no se ha proporcionado o no incluye uncharset
(generalmente debe intentar incluir estos encabezados y asegurarse de que sean correctos, pero hay algunas circunstancias en las que no puede, como archivos locales que no se transfieren a través de HTTP). Sin embargo, solo detectan un número limitado de bytes al comienzo del documento para estos fines, por lo que cualquier cosa que tenga la intención de afectar la detección de contenido o la detección de codificación de caracteres debe estar cerca del comienzo del documento.Por esta razón, HTML5 especifica que cualquier
meta
etiqueta que se utilice para especificar el conjunto de caracteres (ya sea<meta http-equiv="Content-type" content="text/html; charset=...">
o simplemente<meta charset=...>
) debe estar dentro de los primeros 1024 bytes del archivo para que surta efecto. Por lo tanto, si va a incluir información de codificación de caracteres dentro de su documento, debe colocar la etiqueta al principio del archivo, posiblemente incluso antes del<title>
elemento. Pero recuerde que esta etiqueta es innecesaria si especifica correctamente unContent-type
encabezado.En CSS, las declaraciones de estilo posteriores tienen prioridad sobre las anteriores , en igualdad de condiciones. Por lo tanto, generalmente debe colocar las hojas de estilo más genéricas que se puedan anular antes y las hojas de estilo más específicas más adelante.
Por motivos de rendimiento, puede ser una buena idea colocar los scripts en la parte inferior de la página, justo antes del
</body>
, porque cargar scripts bloquea el procesamiento de la página.Obviamente, las
<script>
etiquetas deben ordenarse de modo que los scripts que dependen de cada orden tengan las dependencias cargadas primero.En general, aparte de las restricciones que ya he especificado, el orden de las etiquetas dentro
<head>
no debería importar demasiado, aparte de la legibilidad. Me gusta ver las etiquetas<title>
hacia arriba y colocar las otras<meta>
etiquetas en algún tipo de orden lógico.La mayoría de las veces, el orden en el que debe colocar las cosas en el cuerpo de un documento HTML debe ser el orden en el que deben mostrarse o el orden en el que deben accederse. Puede usar CSS para reorganizar las cosas, pero los lectores de pantalla generalmente leerán las cosas en el orden de origen, los índices de búsqueda extraerán las cosas en el orden de origen, etc.
fuente
iframe
y nunca tendrán un título visible ), pero decidieron no cambiar eso esta vez.<script>
etiquetas con un atributoasync
o . Ver stackoverflow.com/questions/436411/…defer
<head>
Esta es la plantilla que uso, simplemente elimine lo que no necesite para un nuevo proyecto.
<!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>
fuente
<html class="default">
malo?Al agregar algunas sugerencias de rendimiento a la respuesta de Brian, la prioridad más alta debería ser lógicamente las cosas que deberán descargarse para que el navegador pueda comenzar a descargarlas lo antes posible y las cosas que afectarán la forma en que se presenta la página. Entonces sugiero:
También puede considerar incluir cualquier CSS y JS que se carguen en la cabeza, especialmente si es pequeño y es poco probable que el script / hoja externa se almacene en caché de acuerdo con el perfil de su visitante típico. Y si lo hace en línea, idealmente querrá comprimirlo.
Lo último: el usuario tiene que esperar la cabeza, y cualquier recurso de bloqueo que cargue, por lo que es mejor poner tanto como sea posible en el cuerpo o el pie de página.
fuente
Según W3 debería ser:
fuente
A la mayoría de los navegadores no les importa cómo ordena sus elementos, pero siempre debe especificar
charset
primero.Las mejores prácticas para IE7 + requieren que los
charset
,X-UA-Compatible
ybase
las declaraciones se producen antes de cualquier otra cosa en elhead
caso contrario, el navegador comienza de nuevo y re-análisis sintácticos todo lo que vino antes.fuente
Primero desea su tipo de contenido, ya que esto indica la codificación de caracteres; de lo contrario, si aparece más adelante, algunos navegadores intentan adivinar la codificación. (No recuerdo los detalles, pero creo que IE adivinará si no encuentra una codificación en los primeros 75 caracteres del documento)
La mayoría de los servidores web envían la codificación en los encabezados HTTP, pero si un usuario guarda su página, los encabezados no se guardan con ella.
Pondría las referencias CSS en segundo lugar para que el navegador las descargue lo antes posible.
JavaScript no pondría en la cabeza, debería ir al final de sus páginas, ya que descargarlos bloquea la representación de las páginas.
fuente
IIRC, algunos navegadores volverán a cargar el documento al encontrar un
content-type
elemento. Entonces, ese elemento probablemente debería estar primero dentro delhead
elemento del documento.fuente