pode usar qualquer coisa em qualquer ordem? a colocação <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
é importante antes<title>
esse é o mais usado, é o melhor jeito?
<!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 site http://stackoverflow.com não tem nenhuma codificação e<meta>
Eu uso um CMS que tem componente de SEO que adiciona tudo <meta>
para SEO depois de tudo js e css. arquivos. A colocação de qualquer elemento em qualquer ordem permitida pode <head>
afetar a compatibilidade e a codificação do documento?
<meta>
tag é uma solução alternativa para esses casos, mas não essencial.Respostas:
Em HTML, o
DOCTYPE
deve vir primeiro, seguido por um único<html>
elemento, que deve conter um<head>
elemento contendo um<title>
elemento, seguido por um<body>
elemento. Veja a descrição da estrutura global de um documento HTML no HTML 4.01 e o rascunho do HTML5 ; os requisitos reais são basicamente os mesmos, exceto osDOCTYPE
, mas são descritos de forma diferente.As marcas reais (
<html>
,</html>
,<head>
, etc) são opcionais; os elementos serão criados automaticamente se as tags não existirem.<title>
é a única tag necessária em HTML. O menor documento HTML 4.01 válido (pelo menos, que eu poderia gerar) é (precisa de um<p>
porque precisa haver algo no<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>
E o menor documento HTML5 válido:
<!DOCTYPE html><title></title>
Observe que em XHTML, todas as tags devem ser especificadas explicitamente; nenhum elemento será inserido implicitamente.
Os navegadores realizam a detecção de tipo de conteúdo em algumas circunstâncias para determinar o tipo de um recurso que não foi especificado usando um
Content-Type
cabeçalho HTTP, e também a detecção de codificação de caracteres se oContent-Type
cabeçalho não tiver sido fornecido ou não incluir umcharset
(você geralmente deve tentar para incluir esses cabeçalhos e verifique se eles estão corretos, mas há algumas circunstâncias em que você não pode, como arquivos locais não transferidos por HTTP). Eles apenas detectam um número limitado de bytes no início do documento para esses propósitos, portanto, qualquer coisa que tenha a intenção de afetar a detecção de conteúdo ou codificação de caracteres deve estar perto do início do documento.Por esse motivo, o HTML5 especifica que qualquer
meta
tag que é usada para especificar o conjunto de caracteres (<meta http-equiv="Content-type" content="text/html; charset=...">
ou simplesmente<meta charset=...>
) deve estar dentro dos primeiros 1024 bytes do arquivo para ter efeito. Portanto, se você pretende incluir informações de codificação de caracteres em seu documento, deve colocar a tag no início do arquivo, possivelmente antes do<title>
elemento. Mas lembre-se de que essa tag é desnecessária se você especificar umContent-type
cabeçalho corretamente .Em CSS, as declarações de estilo posteriores têm precedência sobre as anteriores , todo o resto sendo igual. Portanto, você geralmente deve colocar as folhas de estilo mais genéricas que podem ser substituídas anteriormente, e as folhas de estilo mais específicas posteriormente.
Por motivos de desempenho, pode ser uma boa ideia colocar scripts na parte inferior da página, logo antes de
</body>
, porque o carregamento de scripts bloqueia a renderização da página.Obviamente, as
<script>
tags devem ser ordenadas de forma que os scripts que dependem de cada pedido tenham as dependências carregadas primeiro.No geral, além das restrições que já especifiquei, a ordem das tags dentro
<head>
não deve importar muito, a não ser pela legibilidade. Tenho tendência a gostar de ver a<title>
parte superior e colocar as outras<meta>
tags em algum tipo de ordem lógica.Na maioria das vezes, a ordem em que você deve colocar as coisas no corpo de um documento HTML deve ser a ordem em que devem ser exibidos ou a ordem em que devem ser acessados. Você pode usar CSS para reorganizar as coisas, mas os leitores de tela geralmente lerão as coisas na ordem da fonte, os índices de pesquisa extrairão as coisas na ordem da fonte e assim por diante.
fonte
iframe
e nunca terão um título visível ), mas decidiram não mudar isso desta vez.<script>
tags com um atributoasync
oudefer
em<head>
. Consulte stackoverflow.com/questions/436411/…Este é o modelo que utilizo, basta excluir o que você não precisa para um novo projeto.
<!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>
fonte
<html class="default">
significa?Adicionando algumas sugestões de desempenho à resposta de Brian, a prioridade mais alta deve logicamente ser coisas que precisarão ser baixadas, para que o navegador possa começar a baixá-las o mais rápido possível, e coisas que afetarão como a página é apresentada. Então, eu sugiro:
Você também pode considerar embutir qualquer CSS e JS carregado no head, especialmente se for pequeno e o script / planilha externa provavelmente não for armazenado em cache de acordo com o perfil de seu visitante típico. E se você fizer isso embutido, o ideal é compactá-lo.
Última coisa: o usuário tem que esperar pela cabeça - e quaisquer recursos de bloqueio carregados - então é melhor colocar o máximo possível no corpo ou rodapé.
fonte
De acordo com W3 deve ser:
fonte
A maioria dos navegadores não se importa como você ordena seus elementos, mas você deve sempre especificar
charset
primeiro.Melhores práticas para IE7 + exigem que os
charset
,X-UA-Compatible
ebase
declarações ocorrer antes de qualquer outra coisa nohead
, caso contrário o navegador é iniciado mais e re-parses tudo que veio antes.fonte
Você quer seu tipo de conteúdo primeiro, pois isso denota a codificação de caracteres, caso contrário, se vier mais tarde, alguns navegadores tentam adivinhar a codificação. (Não me lembro dos detalhes, mas acho que o IE vai adivinhar se não encontrar uma codificação nos primeiros 75 caracteres do documento?)
A maioria dos servidores da web envia a codificação nos cabeçalhos HTTP, mas se um usuário salvar sua página, os cabeçalhos não serão salvos com ela.
Eu colocaria as referências CSS em segundo lugar para que o navegador as baixe o mais rápido possível.
JavaScript eu não colocaria na cabeça, ele deve ir para o final de suas páginas, pois o download bloqueia a renderização das páginas.
fonte
IIRC, alguns navegadores irão recarregar o documento ao encontrar um
content-type
elemento. Portanto, esse elemento provavelmente deve vir primeiro dentro dohead
elemento do documento.fonte