Введение в стандарты Web

Элемент HTML head

Показывать лекцию целиком

Введение

Данная лекция рассматривает часть документа HTML, которая не получает того внимания, которого заслуживает: разметку внутри элемента head . К концу этой лекции вы узнаете о различных частях этого раздела, и для чего они предназначены, включая doctype, элемент title, ключевые слова и описание (которое управляется с помощью мета элементов). Вы узнаете также о JavaScript и стилях CSS (как внутренних, так и внешних ) и о том, чего не следует оставлять в head .

Постарайтесь познакомиться со всем материалом от начала и до конца, так как он представляет ряд проверенных методов, которых стоит придерживаться при работе с элементом HTML head . Хотя каждая часть справедлива сама по себе, но в конце имеется заключение о лучших методах, которое может заставить вас пересмотреть некоторые из предыдущих рекомендаций. Лекция имеет следующее содержание:

  • Почему мы говорим о head ?
  • Задание основного языка документа
  • Суждение о документе по его title
  • Добавление ключевых слов и описания
  • Что насчет внешнего вида? Добавление стилей
  • Добавление динамических свойств с помощью JavaScript
  • Остановитесь здесь! Строковые CSS и JavaScript не слишком удобны!
  • Заключение
  • Контрольные вопросы
  • Почему мы говорим о head?

    Ранее в этом курсе вы узнали, что действительный документ HTML должен иметь doctypedoctype указывает, какой тип HTML должен ожидаться, и дает указание браузерам на соответствующий вывод документа. Более подробно doctype рассматривается в лекции 14, но пока давайте просто скажем, что doctype определяет, что документ должен иметь элемент html с элементами head и body внутри себя. Элемент body определяет область, где вы проводите большую часть времени, так как здесь находится весь контент документа. Элемент head играет, кажется, менее важную роль, так как за исключением элемента title, посетители сайта не видят непосредственно ничего из того, что помещают в этот раздел. Наоборот, элемент head является местом, где находится большая часть инструкций для браузера, и где хранится дополнительная информация о документе — так называемая мета-информация.

    Задание основного языка документа

    Один из фрагментов информации о документе распространяется на предка элемента head , на элемент html. Речь идет об определении основного естественного языка документа. Под естественным языком понимается человеческий язык, такой как французский, тайский или даже английский. Это помогает считывателям экрана, так как слово "шесть" произносится совершенно различно на французском и на английском языке, и может также помочь машинам поиска.

    Атрибуты, которые используются для задания языка, зависят от ) говорит:

    Для HTML используйте только атрибут lang, для XHTML 1.0, используемого как text/html, используйте атрибуты lang и xml:lang, и для XHTML, используемого как XML, используйте только атрибут xml:lang.

    Коды языка могут быть двухбуквенными кодами, такими как en для английского языка, четырехбуквенными кодами, такими как en-US для американского английского, или другие, менее распространенные, коды. Двухбуквенные коды определяются в ISO 639-1 (http://en.wikipedia.org/wiki/ISO_639-1).

    Суждение о документе по его title

    Одним из наиболее важных элементов в head является title. Текст, содержащийся в title, выводится почти всеми агентами пользователей/браузерами в панели заголовка приложения браузера (панели, окаймляющей верх окна браузера). Это первый фрагмент контента, который увидят пользователи Web при посещении сайта, и поэтому он является очень важным. Кроме того, вспомогательные технологии, такие как считыватели экрана (программное обеспечение, которое читает вслух Web-страницы для пользователей с недостатками зрения), выдают его в качестве первой подсказки, что посетители могут ожидать от документа, и множество поисковых систем работают таким же образом, поэтому шансы, что страница будет найдена в Web существенно возрастают, когда используется хороший title, который могут прочитать люди, и который содержит правильные ключевые слова. Давайте возьмем следующий документ HTML (headexample.html в указанном выше загружаемом zip-файле) и откроем его в браузере.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
      <title>I am a title example</title>
    </head>
    <body>
    </body>
    </html>

    Мы увидим, что текст из title будет выведен в панели заголовка выше средств навигации браузера, как показано на рисунке13.1.

    (рис 13.1) Вывод title в окне браузера

    Существует множество руководств в Web о том, как создавать хорошие title документа, большинство которых связано с оптимизацией поисковых систем (SEO).

    Не стоит слишком увлекаться и пытаться обмануть системы поиска, чтобы она создавала большое число результатов поиска. Напишите конкретную короткую информацию о содержании документа. "Разведение собак - рекомендации для восточно-европейской овчарки" является значительно более понятной людям, чем "Собаки, восточно-европейская овчарка, разведение, собака, советы, бесплатно, домашний питомец".

    Добавление ключевых слов и описания

    Следующее, что нужно сделать, может показаться сначала чрезмерным, так как никогда не будет напрямую видно посетителям страницы: надо добавить описание и ключевые слова. Они добавляются в элементе head внутри элементов meta, как показано в следующем примере, взятом с сайта Yahoo! Eurosport headwithmeta.html):

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
      <title>Yahoo! UK  Ireland Eurosport'Sports News | Live Scores | Sport</title>
      <meta name="description" content="Latest sports news and live scores from Yahoo! 
       Eurosport UK. Complete sport coverage with Football results, 
      Cricket scores, F1, Golf, Rugby, Tennis and more.">
      <meta name="keywords" content="eurosport,sports,sport,sports news,
       live scores,football,cricket,f1,golf,rugby,tennis,uk,yahoo">
    </head>
    <body>
    </body>
    </html>

    Однако, если открыть этот документ в браузере, то вы ничего не увидите в теле документа, но если поместить этот документ в сеть, и поисковые системы проиндексируют его, описание будет выводиться как текст ниже ссылки в результатах поиска системы, как показано на рисунке 13.2.

    (рис 13.2) Описания, выводимые на страницах результатов поисковых систем

    Это может быть критически важный фрагмент информации, которую может искать возможный посетитель вашего сайта, что заставит его щелкнуть на ссылке. Описания имеют также другое применение — некоторые браузеры показывают описание как дополнительную информацию, когда документ добавляют в каталог избранных ссылок, как показано на рисунке 13.3:

    (рис 13.3) Описания выводятся в некоторых браузерах, когда документ добавляют в каталог избранных ссылок

    Поэтому, хотя нет очевидной непосредственной выгоды добавления мета-описаний, они играют важную роль в успехе документа. То же самое — в меньшей степени — применимо к добавленным ключевым словам.

    Хотя годы злоумышленного использования спамерами заставили системы поиска не принимать больше ключевые слова всерьез, они могут, тем не менее, быть хорошим инструментом для применения, если вы хотите быстро проиндексировать множество документов, не просматривая и не анализируя содержимое. Мета-ключевые слова можно использовать, например, в системе управления контентом, создавая сценарий, который индексирует их и делает вашу поисковую систему значительно быстрее.

    Будет нелишним предоставить способ поиска документов, не требующий анализа их содержимого. Добавляя некоторые ключевые слова в элемент meta, вы оставляете себе возможность иметь хороший и быстрый поиск для своих сайтов, если захотите создать что-то подобное в будущем. Считайте ключевые слова небольшими закладками, которые вы оставляете в массивной книге, чтобы облегчить себе поиск определенного раздела, который не требует просмотра целых глав.

    Что насчет внешнего вида? Добавление стилей

    Затем в элемент head документа можно добавить правила стилевого оформления, определенные в CSS. Можно вставить их непосредственно в элемент head с помощью элемента style, например (headinlinestyles.html):

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
      <title>Breeding Dogs'Tips about Alsatians</title>
      <meta name="description" content="How to breed Alsatians,
       tips on proper breeding and information about common issues with this breed.">
      <meta name="keywords" content="Dogs,Alsatian,Breeding,Dog,Tips,Free,Pet">
      <style type="text/css">
        body{
          background: #000;
          color: #ccc;
          font-family: helvetica, arial, sans-serif;
        }
      </style>
    </head>
    <body>
    <p>Test!</p>
    </body>
    </html>

    Если открыть этот документ в браузере, он покажет текст "Test!" серым цветом на черном фоне, а шрифт будет Helvetica или Arial, в зависимости от того, что установлено в системе. Элемент style может содержать также атрибут с именем media, который определяет, какой вид среды будет использовать эти стили, т.е. хотите ли вы, чтобы эти стили использовались при просмотре документа на экране компьютера, на карманном устройстве, или во время печати? Существует несколько типов среды для выбора, наиболее полезными из них являются:

  • screen - для вывода на мониторах.
  • print - для определения, как должна выглядеть печатная копия документа.
  • handheld - для определения представления документа на мобильных и других компактных устройствах.
  • ).
  • Если вы, например, хотите переопределить используемые на экране цвета, и используете больший размер шрифта, чтобы страница лучше выглядела при печати, можно добавить другой блок style ниже первого, с атрибутом media со значением print, как показано ниже (посмотрите весь код в headinlinestylesmedia.html):

    <style type="text/css" media="print">
      body{
        background: #fff;
        color: #000;
        font-family: helvetica, arial, sans-serif;
        font-size: 300%;
      }
    </style>

    Теперь, когда вы перейдете к печати этой Web-страницы, браузер будет использовать таблицу стилей print для печати документа, а не стили экрана. Проверьте это, загружая страницу headinlinestylesmedia.html и выбирая предпросмотр печати, как показано на рисунке13.4:

    (рис 13.4) Таблица стилей для экрана и печати

    Добавление динамических свойств с помощью JavaScript

    В элемент head можно добавлять еще сценарии, которые выполняются браузером — так называемые "клиентские сценарии " — написанные на JavaScript. Как было сказано в лекции 4, JavaScript добавляет динамическое поведение в статические документы HTML, например, эффекты анимации, или проверку данных формы, или другие функции, которые запускаются, когда пользователь выполняет определенные действия.

    JavaScript добавляют с помощью тега script. Когда браузер встречает такой сценарий, он бросает все остальное и прекращает разбор оставшегося документа, пока не попытается выполнить в нем код. Это означает, что, когда вы захотите гарантировать, чтобы код JavaScript был доступен до загрузки основного документа, необходимо будет добавить его в элемент head . Например, можно предупредить посетителя с помощью следующего сценария (headscript.html), что определенная ссылка отправит его на другой сервер:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
      <title>Breeding Dogs'Tips about Alsatians</title>
      <meta name="description" content="How to breed Alsatians, 
        tips on proper breeding and information about common issues with this breed.">
      <meta name="keywords" content="Dogs,Alsatian,Breeding,Dog,Tips,Free,Pet">
      <style type="text/css" media="screen">
        body{
          background: #000;
          color: #ccc;
          font-family: helvetica, arial, sans-serif;
        }
        a {color:#fff}
      </style>
      <style type="text/css" media="print">
        body{
          background: #fff;
          color: #000;
          font-family: helvetica, arial, sans-serif;
          font-size: 300%;
        }
      </style>
      <script>
        function leave(){
          return confirm("Вы перейдете на другой сайт,\n вы уверены, что хотите это сделать?")
        }
      </script>
    </head>
    <body>
    Test!
    <a href="http://dailypuppy.com" onclick="return leave()">The Daily Puppy</a>
    </body>
    </html>

    Если открыть этот пример в браузере Web и щелкнуть на ссылке, то код попросит подтвердить ваше действие. Это просто небольшой пример использования сценария, который ничего не говорит о современных развитых применениях. Другие руководства далее в ходе курса будут рассматривать JavaScript и используемые методы более подробно, но пока об этом можно не беспокоиться.

    Остановитесь здесь! Строковые CSS и JavaScript не слишком удобны!

    Я понимаю, что это смелое заявление, но при создании Web-сайтов необходимо помнить, что самым лучшим подходом является максимально возможное повторное использование кода. Добавление предназначенных для всего сайта стилей и сценариев на каждую страницу не имеет большого смысла, наоборот, это существенно затрудняет поддержку всего сайта и ненужным образом увеличивает отдельные документы.

    Значительно лучше поместить стили и сценарии во внешние файлы, и импортировать их в файлы HTML, где потребуется, поэтому, если потребуется сделать какие-то изменения, их нужно будет обновить только в одном месте. Для сценария JavaScript это делают с помощью элементов script, которые не содержат внутри себя никакого сценария, но вместо этого соединяются с внешним файлом с помощью атрибута src, как показано в коде ниже (externaljs.html):

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
      <title>Breeding Dogs'Tips about Alsatians</title>
      <meta name="description" content="How to breed Alsatians, 
       tips on proper breeding and information about common issues with this breed.">
      <meta name="keywords" content="Dogs,Alsatian,Breeding,Dog,Tips,Free,Pet">
      <style type="text/css" media="screen">
        body{
          background: #000;
          color: #ccc;
          font-family: helvetica, arial, sans-serif;
        }
        a {color:#fff}
      </style>
      <style type="text/css" media="print">
        body{
          background: #fff;
          color: #000;
          font-family: helvetica, arial, sans-serif;
          font-size: 300%;
        }
      </style>
      <script src="leaving.js"></script>
    </head>
    <body>
    Test!
    <a href="http://dailypuppy.com" onclick="return leave()">The Daily Puppy</a>
    </body>
    </html>

    Это не так просто с CSS. Элемент style не имеет атрибута src, поэтому необходимо вместо этого использовать элемент link — он имеет атрибут href, который определяет внешний файл CSS для импорта, и атрибут media для определения, что эти стили должны использоваться для экрана, печати. и т.д., аналогично тому, что мы видели ранее. Помещая код CSS и JavaScript в свои собственные файлы, можно существенно уменьшить длину элемента head , как показано ниже (externalall.html):

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
      <title>Breeding Dogs'Tips about Alsatians</title>
      <meta name="description" content="How to breed Alsatians, 
        tips on proper breeding and information about common issues with this breed.">
      <meta name="keywords" content="Dogs,Alsatian,Breeding,Dog,Tips,Free,Pet">
      <link rel="stylesheet" type="text/css" media="screen" href="styles.css">
      <link rel="stylesheet" type="text/css" media="print" href="printstyles.css">
      <script src="leaving.js"></script>
    </head>
    <body>
    Test!
    <a href="http://dailypuppy.com" onclick="return leave()">The Daily Puppy</a>
    </body>
    </html>

    Существуют и другие преимущества хранения стилей и сценариев в своих собственных файлах:

  • Сайт будет работать для посетителей быстрее и проще, так как хотя загружается несколько дополнительных файлов, информацию о стиле и сценарии не требуется повторять в каждом файле Web-страницы (она загружается только один раз, в отдельных файлах сценария / стиля ), поэтому каждый загружаемый файл будет меньше. Кроме того, файлы CSS и JavaScript будут кэшироваться (временно храниться на локальной машине), чтобы при следующем обращении к сайту, файлы уже находились в компьютере, т.е. их не придется снова загружать.
  • Кроме того облегчается обслуживание. Стиль и сценарий для всего сайта - который может состоять из тысяч документов - находятся в одном единственном месте, поэтому, если потребуется что-то изменить, нужно будет изменить только один файл, а не тысячи.
  • Заключение

    Вот и вся информация для данной лекции. Вы узнали обо всех различных частях, которые могут находиться в разделе head документов HTML. Это следующие элементы:

  • Элемент title, который представляет документ.
  • Элементы meta, которые содержат описание содержимого документа и ключевые слова, предназначенные для облегчения индексации этого содержимого.
  • Элементы link, которые указывают на внешние файлы CSS.
  • Элементы script, которые указывают на внешние файлы JavaScript.
  • Правильное задание всех этих элементов создает быстро загружающийся документ, который легко найти и понять.

    Контрольные вопросы

    Как обычно, несколько контрольных вопросов, чтобы проверить, как была понята рассматриваемая предметная область.

  • Почему имеет смысл добавлять описание в элемент meta, если он не выводится на экране?
  • В чем выгода добавления JavaScript в разделе head документа, а не в раздел body?
  • Как можно использовать кэширование браузера, и что нужно сделать, чтобы заставить его работать?
  • Так как поисковые системы уделяют особое внимание элементу title документа, не будет ли полезно напичкать его с избытком подходящими ключевыми словами? В чем недостаток такой практики?
  • Так как вывод элемента title будет несколько невзрачен, то не будет ли иметь смысл выделить некоторые слова жирным текстом с помощью элемента b? Возможно ли это?
  • Об авторе

    Крис Хайлман проработал Web-разработчиком в течение десяти лет, после того как бросил радио-журналистику. Он работает для Yahoo! в Великобритании в качестве инструктора и ведущего разработчика, и осуществляет надзор за качеством кода внешнего представления для Европы и Азии.

    Крис поддерживает блог на сайте Wait till I come (http://wait-till-i.com/) и доступен во многих социальных сетях под ником "codepo8".

    Bluesmoon (http://www.flickr.com/photos/bluesmoon/1545636474/)

    Материалы этого курса имеют лицензию Creative Commons Attribution, Non Commercial - Share Alike 2.5 license.
    Вернуться к учебному плану