можно использовать что угодно в любом порядке? действительно ли размещение <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
важно перед<title>
это наиболее часто используется, это лучший способ?
<!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>
этот сайт http://stackoverflow.com не имеет кодировки и<meta>
Я использую CMS, в которой есть компонент SEO, который добавляет все <meta>
для SEO после всех js и css. файлы. Может ли размещение любых элементов в любом разрешенном порядке <head>
повлиять на совместимость и кодировку документа?
<meta>
тег является обходным путем для этих случаев, но не является существенным.Ответы:
В HTML
DOCTYPE
первом должен быть<html>
элемент, за которым следует один элемент, который должен содержать<head>
элемент, содержащий<title>
элемент, за которым следует<body>
элемент. См. Описание глобальной структуры документа HTML в HTML 4.01 и черновике HTML5 ; фактические требования в основном те же, за исключением требованийDOCTYPE
, но они описаны по-другому.Актуальные теги (
<html>
,</html>
,<head>
и т.д.) не являются обязательными; элементы будут созданы автоматически, если теги не существуют.<title>
- единственный обязательный тег в HTML. Самый короткий действительный документ HTML 4.01 (по крайней мере, который я мог сгенерировать) (нужен,<p>
потому что в нем должно быть что-то,<body>
чтобы быть действительным):<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><title></title><p>
И самый короткий действующий документ HTML5:
<!DOCTYPE html><title></title>
Обратите внимание, что в XHTML все теги должны быть указаны явно; никакие элементы не будут вставлены неявно.
Браузеры в некоторых случаях выполняют анализ типа контента, чтобы определить тип ресурса, который не был указан с помощью
Content-Type
заголовка HTTP, а также анализ кодировки символов, еслиContent-Type
заголовок не был предоставлен или не включаетcharset
(обычно вы должны попробовать чтобы включить эти заголовки и убедиться, что они верны, но есть некоторые обстоятельства, в которых вы не можете, например, локальные файлы, не передаваемые по HTTP). Однако для этих целей они обнюхивают только ограниченное количество байтов в начале документа, поэтому все, что предназначено для воздействия на сниффинг контента или кодировки символов, должно быть ближе к началу документа.По этой причине HTML5 указывает, что любой
meta
тег, который используется для указания набора символов (либо<meta http-equiv="Content-type" content="text/html; charset=...">
или просто<meta charset=...>
), должен находиться в пределах первых 1024 байтов файла, чтобы вступил в силу. Итак, если вы собираетесь включить информацию о кодировке символов в свой документ, вам следует поместить тег в начале файла, возможно, даже перед<title>
элементом. Но помните, что этот тег не нужен, если вы правильно укажетеContent-type
заголовок.В CSS более поздние объявления стилей имеют приоритет перед более ранними при прочих равных. Таким образом, вам обычно следует размещать наиболее общие таблицы стилей, которые могут быть переопределены раньше, а более конкретные таблицы стилей - позже.
По соображениям производительности может быть хорошей идеей разместить скрипты внизу страницы, прямо перед
</body>
, потому что загрузка скриптов блокирует отображение страницы.Очевидно,
<script>
теги должны быть упорядочены так, чтобы в сценариях, зависящих от каждого порядка, сначала загружались зависимости.В целом, за исключением ограничений, которые я уже указал, порядок тегов внутри
<head>
не должен иметь большого значения, кроме удобства чтения. Я предпочитаю смотреть<title>
вверху, а другой<meta>
теги в каком-то логическом порядке.В большинстве случаев порядок, в котором вы должны помещать элементы в тело HTML-документа, должен соответствовать порядку, в котором они должны отображаться, или порядку, в котором к ним следует обращаться. Вы можете использовать CSS для изменения порядка вещей, но программы чтения с экрана обычно читают информацию в исходном порядке, поисковые индексы извлекают вещи в исходном порядке и т. Д.
источник
iframe
и никогда не будут иметь видимого названия ), но на этот раз решили не менять.<script>
тегов с атрибутомasync
илиdefer
в<head>
. См. Stackoverflow.com/questions/436411/…Я использую этот шаблон, просто удалите все, что вам не нужно для нового проекта.
<!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>
источник
<html class="default">
значит?Добавляя несколько предложений по производительности к ответу Брайана, наивысшим приоритетом по логике должны быть вещи, которые необходимо будет загрузить, чтобы браузер мог начать их загрузку как можно скорее, а также вещи, которые повлияют на то, как отображается страница. Итак, я бы предложил:
Вы также можете подумать о встраивании любых CSS и JS, загруженных в заголовок, особенно если он небольшой и внешний скрипт / лист вряд ли будет кэшироваться в соответствии с вашим типичным профилем посетителя. И если вы сделаете его встроенным, в идеале вы захотите его сжать.
И последнее: пользователь должен ждать заголовка и любых загружаемых блокирующих ресурсов, поэтому лучше всего поместить как можно больше в основной или нижний колонтитул.
источник
По W3 должно быть:
источник
Большинство браузеров не возражают против того, как вы упорядочиваете элементы, но вы всегда должны указывать
charset
сначала.Рекомендации для IE7 + требуют , чтобы
charset
,X-UA-Compatible
иbase
заявления происходят прежде чем что - либо еще вhead
противном случае браузер запускается снова и повторно разбирает все , что было до.источник
Вы хотите, чтобы сначала ваш тип содержимого, поскольку он обозначает кодировку символов, иначе, если он появится позже, некоторые браузеры попытаются угадать кодировку. (Я не могу вспомнить детали, но думаю, IE угадает, если не найдет кодировку в первых 75 символах документа?)
Большинство веб-серверов отправляют кодировку в заголовках HTTP, но если пользователь сохраняет вашу страницу, заголовки не сохраняются вместе с ней.
Я бы поставил ссылки на CSS на втором месте, чтобы браузер загрузил их как можно скорее.
JavaScript я бы не стал вкладывать в голову, он должен располагаться внизу ваших страниц, поскольку их загрузка блокирует рендеринг страниц.
источник
IIRC, некоторые браузеры перезагрузят документ при обнаружении
content-type
элемента. Так что этот элемент, вероятно, должен быть первым вhead
элементе документа.источник