Глава 1.6. Гиперссылки, объекты и графические образы1.6.1. Гиперссылки и закладки: элемент AХотя HTML содержит большое количество средств для форматирования текста и структурирования документов, его основной особенностью является возможность создания гипертекстовых документов. Гипертекстовыми являются документы, которые содержат гиперссылки на другие ресурсы Веб.
Для создания анкеров в языке HTML используется элемент A. Синтаксис: <A> </A> (текстовый элемент) Атрибуты: id, class, style, title, lang, dir, события name = CDATA (название закладки) href = URI (URI ссылки) rel = типы ссылок (прямая ссылка) rev = типы ссылок (обратная ссылка) type = тип файла (тип файла, на который указывает ссылка) target = фрейм (фрейм для отображения ссылки) hreflang = код языка (язык ссылки) charset = кодировка (кодировка ссылки) accesskey = символ (имя клавиши быстрого доступа) tabindex = число (номер в порядке нажатия табуляции) shape = rect | circle | poly | default (область в карте ссылок) coords = координаты (координаты в карте ссылок) onfocus = сценарий (при получении элементом фокуса) onblur = сценарий (при потере элементом фокуса) Поддержка: Атрибуты type, hreflang, charset, shape, coords игнорируются; клавиша, заданная в accesskey, должна нажиматься вместе с Alt (5.0+) Атрибуты rel, rev, type, hreflang, charset, coords, tabindex и accesskey игнорируются (4.0+) Элемент A (anchor) определяет положение анкера в документе. Он применяется для создания закладок и для создания гиперссылок. Его содержимым могут быть любые текстовые элементы, кроме A. Для создания закладок (т. е. анкеров цели) используется атрибут name. Например, следующий элемент в документе mydoc.html определяет закладку myheading: <H1><A name="myheading">Мой заголовок</A></H1> Для создании гиперссылки на нее из того же документа используется анкер: <A href="#myheading"> </A> а из другого документа анкер: <A href="mydoc.html#myheading"> </A> Примечания.
Для создания гиперссылок (т. е. анкеров источника) используется атрибут href. Его значением должен быть URI ресурса, на который указывает гиперссылка. Анкер гиперссылки может иметь следующие необязательные атрибуты:
Примеры: <A href="album.html">Мой фотоальбом</A> <A href="../images/me.jpg">Моя фотография</A> <A href="sounds/yester.mid" type="audio/midi" accesskey="Y">Yesterday (MIDI-файл)</A> <A href="section2.html" title="Таблицы стилей" rel="next" target="_blank">Раздел 2</A> <A href="mailto:myname@mail.com" title="Сообщите Ваше мнение">myname@mail.com</A> <A href="http://babel.alis.com:8080/langues/iso639.zh.htm" charset="big5" hreflang="zh">ISO 639 (китайский язык)</A> Помимо базовых событий, элемент A допускает обработку еще двух событий:
1.6.2. Введение в объекты, образы и аплетыЕсли бы HTML-документы состояли только из текста, WWW не приобрел бы и сотой доли своей сегодняшней популярности. К счастью, разработчики языка поняли это достаточно быстро и добавили к стандарту поддержку графических образов (т. е. рисунков и фотографий), аплетов (т. е. программ, которые автоматически загружаются и исполняются на компьютере-клиенте), мультимедийных объектов (т. е. аудиофайлов и видеоклипов) и других HTML-документов. Предыдущие версии языка HTML позволяли авторам включать в HTML-документы графические образы (в виде элемента IMG) и аплеты языка Java (в виде элемента APPLET). Эти элементы имели достаточно серьезные ограничения по использованию, поэтому в HTML 4.0 появился новый элемент OBJECT, который обеспечивает включение в документы любых объектов, типы которых известны обозревателю. Следующая таблица показывает, как возможности элемента OBJECT соотносятся с возможностями старых элементов:
Из таблицы видно, что
Следует отметить, что с графическими образами и другими включаемыми в документ объектами, также как и с любым текстовым элементом, могут быть связаны гиперссылки (см. описание элемента A). Но, помимо стандартного механизма гиперссылок, с графическими образами могут быть связаны и т. н. карты ссылок, позволяющие разбить графический образ на несколько областей и связать с каждой областью свою гиперссылку. В следующих параграфах этой главы мы рассмотрим все механизмы, которые язык HTML предоставляет авторам для включения в документы различных объектов и для создания карт ссылок. 1.6.3. Вставка образа: элемент IMGСинтаксис: <IMG> (содержимого и конечного тега нет) Атрибуты: id, class, style, title, lang, dir, события src = URI (URI графического файла) alt = текст (альтернативный текст) longdesc = URI (URI подробного описания образа) name = CDATA (название образа) width = размер (ширина образа) height = размер (высота образа) usemap = URI (URI клиентской карты ссылок) ismap = ismap (серверная карта ссылок) Поддержка: Атрибут longdesc игнорируется (5.0+) Атрибут longdesc игнорируется (4.0+) Элемент IMG (image) включает в документ графический образ. Он может содержаться в любых текстовых и блочных элементах, кроме PRE. Обязательный атрибут src указывает на местоположение файла, в котором хранится соответствующее изображение; этот файл должен быть в одном из трех форматов, поддерживаемых обозревателями (GIF, JPEG или PNG). Обязательный атрибут alt задает альтернативный текст, который выводится обозревателем вместо образа, если вывод графических изображений отключен или не поддерживается. Все остальные атрибуты являются необязательными.
Пример: <IMG src="http://www.somecompany.com/People/Yury/family.jpg" alt="Фотография моей семьи на отдыхе"> Тот же эффект может быть достигнут с помощью элемента OBJECT: <OBJECT data="http://www.somecompany.com/People/Yury/family.jpg" type="image/jpeg"> Фотография моей семьи на отдыхе </OBJECT> 1.6.4. Вставка объекта: элемент OBJECTСинтаксис: <OBJECT> </OBJECT> (блочный элемент) Атрибуты: id, class, style, title, события classid = URI (URI кода объекта) data = URI (URI данных объекта) archive = CDATA (список архивных файлов) codebase = URI (базовый URI для classid, data, archive) width = размер (ширина объекта) height = размер (высота объекта) usemap = URI (URI клиентской карты ссылок) name = CDATA (название объекта для форм) codetype = тип файла (тип кода объекта) type = тип файла (тип данных объекта) standby = текст (сообщение, отображаемое при загрузке объекта) tabindex = число (номер в порядке нажатия табуляции) declare = declare (декларация объекта, а не вызов его) Поддержка: Атрибуты archive, usemap, standby и declare игнорируются (5.0+) Атрибуты archive, usemap, codetype, standby, tabindex и declare игнорируются (4.0+) Элемент OBJECT обеспечивает включение в документ различных объектов. Он может содержаться в заголовке документа и любых текстовых и блочных элементах, кроме PRE. Его содержимым являются элементы PARAM, за которыми могут следовать текстовые или блочные элементы. При этом все элементы, следующие за элементами PARAM, задают альтернативное содержание, которое должно отображаться, если обозреватель не поддерживает данный тип объектов. Стандарт поясняет назначение элемента OBJECT следующим образом. Обозреватели содержат встроенные механизмы для отображения данных определенных типов, например текста и графических образов в формате GIF и JPEG. Для отображения данных, которые они не умеют отображать сами, обозреватели могут вызывать внешние приложения. Например, для выполнения Java-аплета обозреватель должен передать имя этого аплета и параметры его вызова виртуальной Java-машине и отобразить результаты ее работы в своем окне. Элемент OBJECT позволяет авторам указывать обозревателю тип объекта, включаемого в документ, с тем, чтобы обозреватель принял решение: будет он его отображать сам или передаст исполнение внешней программе. В самом общем случае автор должен передать обозревателю следующую информацию об объекте:
Как мы увидим ниже, для разных типов объектов требуется не вся перечисленная информация, а только ее часть. Но нам сейчас важно то, что синтаксис элемента OBJECT позволяет передать обозревателю всю информацию. Рассмотрим, как это делается, на примере наиболее важных типов объектов. Графические образыДля включения в документ графического образа мы должны указать только два его атрибута: type, задающий формат графического файла, и data, указывающий его URI. Пример: <OBJECT type="image/png" data="http://www.somecompany.com/Images/family.png"> Фотография моей семьи на отдыхе </OBJECT> Java-аплетыДля включения в документ аплета на языке Java мы должны указать его тип (codetype), местоположение (classid) и, возможно, тип (type) и местоположение (data) данных, которыми он пользуется. Кроме того, для запуска аплета может потребоваться задание начальных значений его параметров (см. ниже описание элемента PARAM). Пример: <OBJECT codetype="application/java" classid="java:EmblazeVideo.class"> Ваш обозреватель не поддерживает Java-аплеты. </OBJECT> Управляющие элементы ActiveXДля включения в документ управляющего элемента ActiveX мы должны указать только его GUID (classid). Иногда нужно также указать, где находится соответствующая динамическая библиотека(codebase). Кроме того, для запуска элемента ActiveX может потребоваться задание начальных значений его параметров (см. ниже описание элемента PARAM). Подробнее об элементах ActiveX и их использовании см. п. 3.13.1. Примеры: <OBJECT id="browserIcons" classid="clsid:EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B"> <PARAM name="AlignLeft" value="0"> <PARAM name="AutoSize" value="1"> Элемент ActiveX не найден! </OBJECT> <OBJECT id="menuView" classid="clsid:52DFAE60-CEBF-11CF-A3A9-00A0C9034920" codebase="http://activex.microsoft.com/controls/iexplorer/btnmenu.ocx"> </OBJECT> Теперь мы можем описать назначение каждого атрибута.
1.6.5. Инициализация объекта: элемент PARAMСинтаксис: <PARAM> (содержимого и конечного тега нет) Атрибуты: id name = CDATA (название параметра) value = CDATA (значение параметра) valuetype = data | ref | object (тип значения) type = тип файла (тип файла ресурса) Поддержка: Атрибуты id, valuetype и type игнорируются (5.0+) Атрибуты id, valuetype и type игнорируются (4.0+) Элемент PARAM (parameter) используется только в начале элемента OBJECT для задания начальных значений параметров объекта. Обязательный атрибут name задает название параметра, значение которого задается данным элементом, а атрибут value задает значение этого параметра. Атрибут valuetype задает тип атрибута value; он может принимать следующие значения:
Современные обозреватели поддерживают только параметры типа data. Все остальные синтаксические свойства названий и значений параметров определяются типом объекта, к которому они относятся. Примеры использования элемента PARAM приведены выше. 1.6.6. Карты ссылокПомимо текстовых гиперссылок, HTML-документы могут содержать т. н. карты ссылок, позволяющие разбить графический образ на несколько активных областей и связать с каждой областью определенное действие (загрузить другой документ, запустить какую-либо программу и т. п.). При активизации области щелчком мыши обозреватель выполняет соответствующее действие. Существуют два типа карт ссылок:
При этом клиентские карты предпочтительнее по двум причинам:
1.6.6.1. Клиентские карты: элементы MAP и AREAСинтаксис: <MAP> </MAP> (блочный элемент) Атрибуты: id, class, style, title, lang, dir, события name = CDATA (название карты) Поддержка: Соответствует стандарту (5.0+) Соответствует стандарту (4.0+) Синтаксис: <AREA> (содержимого и конечного тега нет) Атрибуты: id, class, style, title, lang, dir, события shape = rect | circle | poly | default (область в карте ссылок) coords = координаты (координаты в карте ссылок) href = URI (URI ссылки) nohref = nohref (неактивная область) alt = текст (альтернативный текст) target = фрейм (фрейм для отображения ссылки) accesskey = символ (имя клавиши быстрого доступа) tabindex = число (номер в порядке нажатия табуляции) onfocus = сценарий (при получении элементом фокуса) onblur = сценарий (при потере элементом фокуса) Поддержка: Соответствует стандарту; клавиша, заданная в accesskey, должна нажиматься вместе с Alt (5.0+) Атрибуты alt, accesskey и tabindex не поддерживаются (4.0+) Элемент MAP применяется для создания клиентских карт ссылок. Его содержимым могут быть либо элементы AREA, либо любые блочные элементы. MAP употребляется совместно с элементами IMG, OBJECT или INPUT, загружающими графический образ, карту которого он определяет. При этом обязательный атрибут name содержит название карты, которое используется как имя закладки в атрибуте usemap ассоциированного с картой ссылок. Пример: <MAP name="mymap"> <AREA href="reference.htm" alt="Справочник по HTML и CSS" coords="5,5,95,195"> <AREA href="design.htm" alt="Введение в Веб-дизайн" coords="105,5,195,195"> <AREA href="tools.htm" alt="Инструментарий" coords="205,5,295,195"> </MAP> <IMG src="sitemap.gif" alt="Карта узла" usemap="#mymap" width="300" height="200"> В этом примере содержимым элемента MAP являются три элемента AREA, определяющие активные области графического образа. Такой элемент MAP не отображается обозревателями; его присутствие в документе обнаруживается только по подсказкам, заданным в атрибутах alt элементов AREA. Но, как отмечено выше, элемент MAP может содержать и блочные элементы, которые, в свою очередь, должны содержать анкеры, определяющие активные области образа и соответствующие гиперссылки. В этом случае только что приведенный пример мог бы выглядеть так: <MAP name="mymap"> <P>Выберите раздел: <A href="reference.htm" coords="5,5,95,195">Справочник по HTML и CSS</A> <A href="design.htm" coords="105,5,195,195">Введение в Веб-дизайн</A> <A href="tools.htm" coords="205,5,295,195">Инструментарий</A> </P> </MAP> <OBJECT data="sitemap.gif" type="image/gif" usemap="#mymap" width="300" height="200"> </OBJECT> В этом случае содержимое элемента MAP отображается как набор текстовых гиперссылок. Если мы хотим скрыть его, то элемент следует перенести внутрь ассоциированного c ним элемента OBJECT. Отметим, что при наличии в MAP каких-либо элементов помимо AREA, обозреватели игнорируют все элементы AREA. Теперь рассмотрим подробнее строение элемента AREA, который определяет активную область карты ссылок и соответствующую гиперссылку. Атрибуты shape и coord задают соответственно форму активной области и ее координаты относительно левого верхнего угла графического образа; они могут принимать следующие значения:
Атрибут href определяет URI гиперссылки, связанной с данной активной областью. Если он не задан или элемент AREA содержит атрибут nohref, то данная область не является активной. Обязательный атрибут alt задает альтернативный текст, который выводится обозревателем вместо образа, если вывод графических изображений отключен или не поддерживается. Этот же текст выводится обозревателем в качестве подсказки при попадании курсора мыши на активную область. Все остальные атрибуты являются необязательными.
1.6.6.2. Серверные картыСерверные карты используются в тех случаях, когда карта ссылок слишком сложна для клиентской карты. Серверные карты могут создаваться только для образов, заданных элементом IMG или INPUT, который должен находиться внутри анкера гиперссылки и иметь атрибут ismap. Пример: <A href="http://www.acme.com/cgi-bin/topresult.cgi"> <IMG src="game.gif" ismap="ismap" alt="Результаты игр"></A> При щелчке мыши по этому образу обозреватель формирует запрос к серверу, с которого загружен текущий HTML-документ. Этот запрос формируется в соответствии с интерфейсом CGI, который подробно описан в Части VI, по следующим правилам:
1.6.7. Форматы графических файловЧисло форматов, в которых сохраняются графические данные, очень велико. Однако, в WWW их количество сводится всего к трем форматам: GIF, JPEG и PNG. Исторически ситуация сложилась так, что первые Веб-обозреватели поддерживали форматы GIF и JPEG, поэтому эти два формата стали стандартом de facto для хранения графики в Веб. Затем специально для сетевой графики был разработан формат PNG, который должен составить конкуренцию формату GIF. В этом разделе мы приводим краткую характеристику каждого из перечисленных форматов и даем рекомендации по их применению. Поддержка: Поддерживает все три формата Поддерживает все три формата 1.6.7.1. Формат GIFФормат GIF (Graphics Interchange Format) был первоначально разработан для пользователей сети CompuServe и существует в двух вариантах: GIF87a и GIF89a. Наше описание относится ко второму из них. Формат GIF обеспечивает сжатие данных, которое обычно варьируется от 3:1 до 5:1. Графика, сохраняемая в этом формате, ограничивается 256 цветами (8 бит на пиксель), поэтому он не пригоден для хранения полноцветных фотографий, но идеально подходит для хранения значков, эмблем и других искусственно созданных изображений с ограниченным количеством цветов. Стандарт GIF89a поддерживает три эффекта, полезных при создании Веб-страниц:
1.6.7.2. Формат JPEGФормат JPEG (Joint Photographic Expert Group) предназначен для хранения полноцветных изображений (24 бита на пиксель, т. е. 16,7 млн. цветов). Он использует мощный метод сжатия данных, который, однако, может привести к потере качества изображения. Тем не менее, часто можно сжимать изображения с коэффициентом 10:1 и даже 20:1 без заметной для глаза потери качества. Этот формат следует использовать для хранения полноцветных фотографий и не следует использовать для хранения изображений, уже приведенных к 256-цветовой палитре. Кроме того, JPEG не годится для изображений с резким переходом между цветами это объясняется особенностями его алгоритма сжатия. Аналогом черезстрочных GIF-файлов являются т. н. прогрессивные JPEG-файлы (p-JPEG), которые также отображаются с постепенной прорисовкой. Прозрачность в JPEG-образах не поддерживается. 1.6.7.3. Формат PNGФормат PNG (Portable Network Graphics) это новый графический стандарт, разработанный W3C и призванный заменить GIF, однако пока он используется не слишком широко. Особенности формата PNG:
| |||||||||||||||||||||||||||||||||||||||||||