można użyć czegokolwiek w dowolnej kolejności? czy umieszczanie <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
jest ważne wcześniej<title>
to jest najczęściej używane, czy to najlepszy sposób?
<!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>
ta witryna http://stackoverflow.com nie ma żadnego kodowania i<meta>
Używam CMS, który ma komponent SEO, który dodaje wszystko <meta>
dla SEO po wszystkich js i css. akta. czy umieszczenie dowolnych elementów w dowolnej kolejności, która jest dozwolona, może <head>
wpłynąć na zgodność i kodowanie dokumentu?
<meta>
znacznik jest obejściem w takich przypadkach, ale nie jest niezbędny.Odpowiedzi:
W HTML musi znajdować
DOCTYPE
się na pierwszym miejscu, po którym następuje pojedynczy<html>
element, który musi zawierać<head>
element zawierający<title>
element, po którym następuje<body>
element. Zobacz opis globalnej struktury dokumentu HTML w HTML 4.01 i szkic HTML5 ; rzeczywiste wymagania są w większości takie same, inne niż teDOCTYPE
, ale są inaczej opisane.Rzeczywiste elementów (
<html>
,</html>
,<head>
itp) opcjonalnie; elementy zostaną utworzone automatycznie, jeśli tagi nie istnieją.<title>
to jedyny wymagany tag w HTML. Najkrótszy poprawny dokument HTML 4.01 (przynajmniej taki, jaki mogłem wygenerować) to (potrzebuje a,<p>
ponieważ musi być coś w pliku,<body>
aby było prawidłowe):<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><title></title><p>
I najkrótszy prawidłowy dokument HTML5:
<!DOCTYPE html><title></title>
Zauważ, że w XHTML wszystkie znaczniki muszą być określone jawnie; żadne elementy nie zostaną wstawione niejawnie.
W pewnych okolicznościach przeglądarki wykonują podsłuchiwanie typu zawartości w celu określenia typu zasobu, który nie został określony przy użyciu
Content-Type
nagłówka HTTP, a także wykrywanie kodowania znaków, jeśliContent-Type
nagłówek nie został dostarczony lub nie zawiera znakucharset
(generalnie powinieneś spróbować aby dołączyć te nagłówki i upewnić się, że są poprawne, ale są pewne okoliczności, w których nie można tego zrobić, na przykład pliki lokalne nie przesyłane przez HTTP). Jednak do tych celów wąchają tylko ograniczoną liczbę bajtów na początku dokumentu, więc wszystko, co ma wpłynąć na wykrywanie treści lub kodowanie znaków, powinno znajdować się blisko początku dokumentu.Z tego powodu HTML5 określa, że każdy
meta
znacznik używany do określenia zestawu znaków (albo<meta http-equiv="Content-type" content="text/html; charset=...">
po prostu<meta charset=...>
) musi znajdować się w pierwszych 1024 bajtach pliku, aby zadziałał. Tak więc, jeśli zamierzasz zawrzeć informacje o kodowaniu znaków w dokumencie, powinieneś umieścić znacznik na początku pliku, prawdopodobnie nawet przed<title>
elementem. Pamiętaj jednak, że ten tag jest niepotrzebny, jeśli poprawnie określiszContent-type
nagłówek.W CSS późniejsze deklaracje stylów mają pierwszeństwo przed wcześniejszymi , wszystkie inne są jednakowe. Dlatego generalnie powinieneś umieścić najbardziej ogólne arkusze stylów, które mogą zostać nadpisane wcześniej, a bardziej szczegółowe arkusze stylów później.
Ze względu na wydajność dobrym pomysłem może być umieszczenie skryptów na dole strony, tuż przed
</body>
, ponieważ ładowanie skryptów blokuje renderowanie strony.Oczywiście
<script>
tagi powinny być uporządkowane tak, aby skrypty zależne od każdej kolejności miały najpierw załadowane zależności.Ogólnie rzecz biorąc, poza ograniczeniami, które już określiłem, kolejność tagów w ramach
<head>
nie powinna mieć większego znaczenia, poza czytelnością. Lubię patrzeć na<title>
górę, a pozostałe<meta>
tagi układam w logicznej kolejności.W większości przypadków kolejność, w jakiej należy umieszczać elementy w treści dokumentu HTML, powinna być taka, w jakiej powinny być wyświetlane, lub kolejność, do której należy uzyskać dostęp. Możesz użyć CSS do zmiany kolejności rzeczy, ale czytniki ekranu będą na ogół czytać rzeczy w kolejności źródłowej, indeksy wyszukiwania wyodrębniają rzeczy w kolejności źródłowej i tak dalej.
źródło
iframe
i nigdy nie będą miały widocznego tytułu ), ale tym razem postanowili tego nie zmieniać.<script>
tagów z atrybutemasync
lubdefer
w<head>
. Zobacz stackoverflow.com/questions/436411/…To jest szablon, którego używam, po prostu usuń wszystko, czego nie potrzebujesz do nowego projektu.
<!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>
źródło
<html class="default">
znaczy?Dodając kilka sugestii dotyczących wydajności do odpowiedzi Briana, logicznie rzecz biorąc, najwyższym priorytetem powinny być rzeczy, które będą musiały zostać pobrane, aby przeglądarka mogła zacząć je pobierać jak najszybciej, oraz rzeczy, które wpłyną na sposób prezentacji strony. Więc proponuję:
Możesz również rozważyć wstawienie dowolnego CSS i JS, które są ładowane w głowie, zwłaszcza jeśli jego mały i zewnętrzny skrypt / arkusz prawdopodobnie nie zostanie zapisany w pamięci podręcznej zgodnie z profilem typowego gościa. A jeśli zrobisz to w tekście, najlepiej będzie go skompresować.
Ostatnia rzecz: użytkownik musi poczekać na głowę - i wszelkie blokujące zasoby, które ładuje - dlatego najlepiej umieścić jak najwięcej w treści lub stopce.
źródło
Według W3 powinno być:
źródło
Większość przeglądarek nie ma nic przeciwko kolejności elementów, ale zawsze powinieneś to określić jako
charset
pierwsze.Najlepsze praktyki dla IE7 + wymaga , że
charset
,X-UA-Compatible
orazbase
deklaracje nastąpić zanim cokolwiek innego whead
przeciwnym razie przeglądarka uruchamia się i re-Analizuje wszystko, co było przed.źródło
Chcesz najpierw typ zawartości, ponieważ oznacza to kodowanie znaków, w przeciwnym razie, jeśli pojawi się później, niektóre przeglądarki będą próbowały odgadnąć kodowanie. (Nie pamiętam szczegółów, ale myślę, że IE zgadnie, czy nie znajdzie kodowania w pierwszych 75 znakach dokumentu?)
Większość serwerów WWW wysyła kodowanie w nagłówkach HTTP, ale jeśli użytkownik zapisze twoją stronę, nagłówki nie zostaną z nią zapisane.
Na drugim miejscu umieściłbym odniesienia CSS, aby przeglądarka pobierała je jak najszybciej.
JavaScript, którego nie umieszczałbym w głowie, powinien znajdować się na dole twoich stron, ponieważ pobieranie ich blokuje renderowanie stron.
źródło
IIRC, niektóre przeglądarki ponownie załadują dokument po napotkaniu
content-type
elementu. Więc ten element powinien być prawdopodobnie pierwszy whead
elemencie dokumentu.źródło