Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №7/2008


Телекоммуникации

Сайтостроение по стандартам

Заметка 5. Готовим шаблон кода HTML

Декларация DOCTYPE

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

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

Джеффри Зельдман
“Web-дизайн по стандартам”

Очень необходимая конструкция! Ваша визуальная разметка, выполненная средствами CSS по стандартам W3C, может потерпеть крах на экране, если DOCTYPE не будет записан.

Элемент DOCTYPE предназначен для указания соответствия кода документа одному из стандартов W3C. Браузер, в зависимости от стандарта, по-разному интерпретирует элементы на странице.

Элемент DOCTYPE — это, скорее, даже не элемент, а описание (декларация), имеющее свой собственный синтаксис.

Декларацию DOCTYPE помещают перед элементом HTML, она начинается с восклицательного знака и записывается прописными буквами (и в XHTML).

Варианты DOCTYPE для последней (и окончательной) версии HTML 4.01 приводятся ниже.

Предусмотрено 3 стандарта языка HTML 4.01:

  • Strict (строгий);
  • Transitional (переходный);
  • Frameset (аналогичен Transitional, но с фреймами).

Вариант Strict

Код не содержит элементов и атрибутов, помеченных W3C как “устаревшие” или “не одобряемые” (например: CENTER, FONT, S, U, align, background, bgcolor, color, size).

Декларация записывается в виде:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

Вариант Transitional

Код может содержать устаревшие теги, вариант введен в целях совместимости со старыми версиями HTML.

Декларация записывается в виде:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML

4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

Вариант Frameset

Аналогичен Transitional, но содержит также элементы для создания наборов фреймов.

Декларация записывается в виде:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01

Frameset//EN"

"http://www.w3.org/TR/html4/frameset.dtd">

Какой вариант DOCTYPE выбрать?

Вариант Frameset отбрасываем сразу, так как фреймы — это рудимент прошлого века, и использовать их мы не собираемся.

В переходный период, когда браузеры не на 100% поддерживают стандарты, ничего другого не остается для практики, как выбрать переходный стандарт Transitional.

Таким образом, код любой нашей странички должен иметь такой вид:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01

Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<HTML lang="ru">

...

</HTML>

Атрибут lang со значением "ru" определяет русский язык в качестве базового языка на страничке.

Информация о языке, определенная атрибутом lang, может быть использована Пользовательским Агентом (ПА) для управления представлением различными путями.

Вот некоторые ситуации, где предоставленная автором информация о языке может быть полезной:

  • содействие поисковым машинам;
  • содействие речевым синтезаторам;
  • помощь ПА в выборе вариантов глифов для высококачественной печати;
  • помощь ПА в выборе вариантов кавычек;
  • помощь ПА в принятии решений о дефисах, лигатурах и пробелах;
  • помощь программам проверки правописания.

Цель атрибута lang — создать ПА условия для более понятного представления содержимого на базе принятой для данного языка культурной практики.

Спецификация HTML 4.01
(http://www.w3.org/TR/html401/)

Головная часть HTML-кода

Кодировка

В головной части HTML-кода нужно указывать кодировку, в которой написана страничка. Скорее всего вы записываете страницу в стандартной кодировке Windows, и тогда в головную часть кода нужно включать следующий элемент META:

<META http-equiv="Content-Type" content="text/html; charset=windows-1251">

Рассмотрим подробнее устройство этого элемента.

Атрибут http-equiv связывает информацию, заданную в атрибуте content, с заголовком ответа сервера на просьбу браузера переслать ему гипертекстовую страницу.

Сервер сообщит браузеру, что будет послан текстовый файл c HTML-кодом (значение text/html) в кодировке windows-1251 (значение charset=windows-1251).

Следует отметить, что некоторые серверы поддерживают автоматическую перекодировку страниц, и тогда указание charset может привести к путанице: сервер сообщит браузеру, что страница будет в кодировке windows-1251 (информация из тега META), а сам перекодирует страницу, например, в КОИ8. Пользователь увидит на экране “кракобяки”.

Разработчик должен поинтересоваться у провайдера сервера, на котором он собирается держать свой сайт, будет ли сервер перекодировать страницы перед передачей браузеру клиента, нужно ли на страницах указывать кодировку.

Например, в справочном разделе Яндекса для тех, кто пользуется хостингом этого сервера, написано:

“Файлы, размещаемые на Народе, должны быть в кодировке Windows-1251. Кроме того, не надо использовать meta-тег charset”.

http://narod.yandex.ru/help/09.yhtml

Название окна

Стандарт требует обязательное задание названия для окна, в котором будет отображаться гипертекстовый документ.

Каждый документ HTML обязан иметь элемент TITLE в разделе HEAD.

Спецификация HTML 4.01
(http://www.w3.org/TR/html401/)

Название окна задается при помощи элемента TITLE:

<TITLE>Название окна</TITLE>

Название окна должно совпадать с заголовком страницы (или с названием сайта на Главной). Это очень удобно, когда окно с сайтом свернуто в кнопку на Панели задач — на этой кнопке пользователь видит заголовок текущей страницы.

Название окна заносится в набор избранных сайтов (меню Избранное), если пользователь решит запомнить ссылку на текущую страницу.

Название окна — дополнительная подсказка пользователю о его текущем положении на сайте.

Ссылка на CSS-файл

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

Для связи HТML-кода с этим файлом в головной части нужно записать указание:

<LINK rel="stylesheet" type="text/css" href="main.css">

Имя CSS-файла может быть, конечно, другим, например: general.css, common.css, head.css, central.css, chief.css, total.css. Важно (для нас, а не для браузера), чтобы оно отражало суть содержимого.

Если, помимо общего, для страницы создан еще и собственный стилевой файл, то ссылку на него помещаем следом за главной ссылкой:

<LINK rel="stylesheet" type="text/css" href="main.css">

<LINK rel="stylesheet" type="text/css" href="01.css">

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

Другие элементы

В головной части HTML-кода используют и другие элементы. Этот, например, указывает имя автора документа:

<META http-equiv="author" content="Иван Сидоров">

А эти элементы задают описание документа и ключевые слова для поисковых систем:

<META name="description" content="Обучение учителей и школьников">

<META name="keywords" content="Роботландия, Web-конструирование">

Шаблон кода HTML

Таким образом, код любой нашей странички должен иметь вид:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01

Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<HTML lang="ru">

<HEAD>

<META http-equiv="Content-Type" content="text/html;

charset=windows-1251">

<META name="description" content="краткое описание страницы">

<META name="keywords" content="список ключевых слов">

<LINK rel="stylesheet" type="text/css"

href="main.css">

<TITLE>Название окна</TITLE>

</HEAD>

<BODY>

...

</BODY>

</HTML>

 Иногда мы будем вынуждены использовать более полную форму тега BODY, в которой присутствуют визуальные (не рекомендованные W3C) атрибуты:

<BODY bgcolor=white text=black link=blue alink=red vlink=purple>

Здесь задано (в качестве примера):

bgcolor=white

Белый фон страницы

text=black

Черный цвет текста

link=blue

Синий цвет неотработанной ссылки

alink=red

Красный цвет активной ссылки

vlink=purple

Пурпурный цвет отработанной ссылки

Зачем нарушать рекомендации W3C? Разве нельзя задать эти визуальные параметры в файле CSS?

Можно и нужно, даже тогда, когда они заданы в теге BODY.

Атрибуты bgcolor, text, link, alink, vlink в теге BODY отвечают за глобальное представление содержания страницы на экране, поэтому чрезвычайно важны: их полное отсутствие, или отсутствие некоторых из них, может привести к серьезным последствиям в браузерах, которые не поддерживают CSS.

Есть ли такие браузеры, скажете вы? Ведь они давно ушли к динозаврам!

IE-3 в природе уже точно не существует. Возможно, кто-то еще использует Netscape-4, если у него древний компьютер.

Эти браузеры, можно считать, ушли.

Но... Одни ушли, другие активно приходят: браузеры карманных компьютеров, компьютеров автомобилей, мобильных телефонов. И с поддержкой CSS у них пока не все в порядке.

Допустим, логотип и заголовок созданы на синем фоне, цвет фона задан в стилевых определениях, а тег BODY пуст.

Что получится? Цвет фона браузер установит по умолчанию: в одних браузерах он будет белым, в других — серым. Но в каждом из этих случаев антиалиасинг картинок, нарисованных для синего фона, будет неверным, что проявится синими разводами по контуру.

Может получиться и еще хуже: если рисовали белыми линиями на синем фоне, то на белом фоне рисунка не будет видно.

Таким образом, атрибуты в BODY нужны, когда цвет фона очень важен: на другом фоне графика будет выводиться с погрешностями или не будет видна вовсе. В остальных случаях задавать атрибуты цвета в BODY не надо.

Но, может быть, можно ограничиться только атрибутом bgcolor, не задавая остальных? Сомнительно. Нужно, чтобы текст на фоне, заданном атрибутом bgcolor, нормально читался, как и ссылки.

Нужно ли указывать значения цвета для текста, фона и ссылок (неотработанных, активных, отработанных), если они указываются в BODY?

Да, нужно. Стилевые указания главнее атрибутов, именно они будут работать в браузерах, которые поддерживают CSS (атрибуты BODY будут проигнорированы). Стилевые правила позволят менять дизайн в современных браузерах, не редактируя HTML-код на сотнях страниц. Кроме того, стилевые правила имеют гораздо больше возможностей по сравнению с атрибутами. А атрибуты останутся запасным вариантом, обеспечивающим доступность для браузеров, не поддерживающих CSS.

Мы решили использовать переходную модель Transitional для своих HTML-кодов. И вот эта наша первая обоснованная уступка строгому разделению содержания от представления.

А.. А.. Дуванов,
г. Переславль-Залесский

TopList