Цель гиперссылки
Для того чтобы гиперссылки открывали соответствующую Web-страницу в нужном нам фрейме, надо правильно выставить некоторые их свойства.
Откройте страницу default.htm. Установите текстовый курсор на любой гиперссылке, находящейся во фрейме с основным содержимым. Пусть это будет гиперссылка, ведущая на страницу сведений об авторе About.htm. И обратите внимание на редактор свойств. А именно на раскрывающийся список
Target, позволяющий задать цель гиперссылки. В развернутом виде он показан на рис. 7.21.
Фрейм и набор фреймов
Откройте какую-нибудь из наших Web-страниц, созданных в предыдущих главах. Посмотрите на нее. Что она собой представляет? Правильно, текстовый документ. Обычный текстовый документ, возможно, "разбавленный" графикой и таблицами. Но, так или иначе, все это помещается в основном "потоке" текста и лишь изредка выбивается из него (например, изображения, выровненные влево или вправо; подробнее см. главу 4). Все, абсолютно все "течет" в этом могучем "потоке": и основное (полезное) содержимое страницы, и сведения об авторских правах, и заголовок, и набор гиперссылок.
А теперь представьте себе, что окно Web-обозревателя разбито на несколько меньших "форточек" и в каждой "форточке" загружается своя Web-страница. В одной — набор гиперссылок, в другой — заголовок, в третьей — сведения об авторских правах, а в самой большой — полезный текст, ради которого и был создан этот сайт. Причем "форточки" эти ведут себя как независимые окна Web-обозревателя: у них даже есть свои полосы прокрутки.
Когда вы щелкаете по гиперссылке, нужная страница сразу загружается в соответствующую ей "форточку". При этом она содержит только полезный текст — набор гиперссылок, заголовок сайта и сведения об авторских правах находятся на страницах, отображаемых в других "форточках".
Схематично все это можно представить так, как показано на рис. 7.1.
Недостатки фреймов и их преодоление
Вроде бы, фреймы всем хороши. Они позволяют разделить окно Web-обозревателя на несколько независимых "форточек", в каждой из которых может отображаться своя Web-страница. Таким образом, одна большая Web-страница делится на несколько маленьких, содержащих какую-либо часть большой страницы: заголовок, полосу навигации, сведения об авторских правах и основное содержимое. При этом когда пользователь щелкает по гиперссылке, происходит обновление только фрейма с основным содержимым; содержимое всех остальных фреймов остается неизменным.
Достоинства такого подхода очевидны. Во-первых, не нужно дублировать заголовок, полосу навигации и сведения об авторских правах на всех страницах сайта — достаточно поместить их один раз в соответствующие фреймы, где они и останутся. Во-вторых, сами страницы уменьшатся в размерах и станут быстрее загружаться.
На этом достоинства фреймов кончаются, и начинаются недостатки.
Недостаток первый: невозможность обновления содержимого сразу двух или нескольких фреймов. Давайте рассмотрим гипотетический сайт — каталог программ, структура фреймов которого показана на рис. 7.26.
| |
|
|
|
| |
Заголовок сайта
| | |
| |
Список категорий программ (Интернет, офис, системные, утилиты, мультимедиа и т. д.)
| |
Список программ выбранной категории
| | |
| |
|
| |
Описание выбранной в списке программы, "снимок" экрана, ссылка для загрузки и т.д.
| | |
| |
Сведения о правах разработчика сайта
| | |
| |
|
|
|
Рис. 7.26. Структура фреймов сайта — каталога программ
Предположим, пользователь щелкает одну из позиций списка категорий, расположенного в левом фрейме. Вам необходимо обновить содержимое фрейма списка программ, относящихся к выбранной категории, и вы это сделаете. Но, кроме того, нужно будет обновить содержимое фрейма описания выбранной программы, скажем, вывести описание первой или самой популярной программы в списке. Ведь если оставить в нем описание программы, относящейся совсем к другой категории, это будет, мягко говоря, некрасиво.
К несчастью, средствами HTML это сделать невозможно. Обычная гиперссылка HTML, описываемая парным тегом <А>, может указывать только на один файл. Если вы хотите по щелчку загружать сразу две страницы (или более — в данном случае это несущественно) в разные фреймы, вам придется писать сценарий на языке JavaScript. А это уже довольно сложная задача для начинающего Web-дизайнера. На первый раз можем посоветовать только постараться избежать использования таких наборов фреймов или же отказаться от фреймов вообще.
Недостаток второй: невозможность задания текста, который Web-обозреватель помещает в заголовок своего окна. Как вы знаете, он помещает туда название отображаемой в окне Web-страницы. Но поскольку страница набора фреймов никогда не меняется (меняется только содержимое одного из фреймов), текст в заголовке окна Web-обозревателя остается неизменным. В принципе, это не очень страшно — мало кто из посетителей сайтов обращает внимание на заголовок окна Web-обозревателя. Но если вы собираетесь выводить в заголовке окна какую-либо важную информацию, имейте это в виду.
Недостаток третий: "несовместимость". Путь фреймов к признанию комитетом WWWC был так долог и тернист, что за это время успели появиться несколько программ Web-обозревателей, их поддерживающих. Но поскольку единого стандарта на фреймы не было, поддерживали они их по-своему. В результате фреймы стали одним из самых "несовместимых" элементов HTML.
В данном случае можно посоветовать только тщательно тестировать страницы наборов фреймов в разных программах Web-обозревателей. Конечно, Dreamweaver старается генерировать максимально совместимый код, но все-таки не помешает лишний раз проверить, что он сгенерировал.
Недостаток четвертый. О нем мы поговорим в главе 14, когда будем рассматривать поисковые системы и "раскрутку" вашего сайта с их помощью.
Оптимизация фреймов
Создав наш первый работающий набор фреймов, можно подумать о его оптимизации.
Полоса навигации
Полоса навигации — это обычный набор гиперссылок, организованный в виде вертикальной или горизонтальной полосы и расположенной вдоль края окна Web-обозревателя. Как правило, полоса навигации располагается в специально выделенном фрейме. И очень часто формируется с использованием таблицы: либо в виде набора текстовых ссылок, либо в виде составного изображения. Во втором случае очень часто гиперссылки полосы навигации делаются "живыми", т. е. реагирующими на наведение курсора мыши и щелчок по ним. Это делается, как вы уже поняли, с помощью активных изображений.
Сделать полосу навигации с текстовыми гиперссылками проще простого. Достаточно вставить в левый фрейм таблицу из пяти строк и одного столбца, занимающую всю его ширину и высоту, вписать в ячейки нужные слова и превратить их в гиперссылки. Конечно, вы можете помудрить над таблицей: "приделать" ей границу, как было описано в главе 5, сделать графический фон и т. п. Но, согласитесь, это делается намного проще, чем графическая полоса навигации. По крайней мере не нужно заготавливать уйму графических изображений для каждой гиперссылки.
Вы, наверное, уже задали себе вопрос: зачем нужна пятая ссылка? Для страницы Main.htm. В старом сайте мы ни на одной странице не предусмотрели ссылки для возврата на первую страницу. И зря.
А что же графическая полоса навигации? Она делается с помощью той же таблицы. В ячейках таблицы размещаются графические изображения, выполняющие роль гиперссылок (просматривается аналогия с составным изображением). Вы можете использовать различные визуальные эффекты, например установить большие промежутки между изображениями, манипулируя параметрами
Cell Padding и Cell Spacing каждой ячейки таблицы, или разместить их вплотную друг к другу. Опять же, вы можете задать для таблицы отдельный цвет фона или графический фон. В общем, все в ваших руках.
Вы можете использовать набор обычных статичных изображений для гиперссылок. Но такие статичные ссылки давно вышли из моды; вспомните, что важнейшим признаком современной Всемирной паутины являются динамичность и интерактивность. Чтобы "оживить" ваши гиперссылки, вы можете использовать надписи или кнопки Flash (прекрасная идея!) или активные изображения. Второй подход более популярен, вероятно, потому, что не требует модуля проигрывателя Flash. Так или иначе Dreamweaver позволит вам сделать и то, и другое исключительно просто.
Более того, Dreamweaver HMeet встроенные средства создания полосы навигации из набора активных изображений. Вам нужно будет только заготовить соответствующее количество графических изображений, представляющих каждую гиперссылку. Это самая трудоемкая часть работы — все остальное возьмет на себя Dreamweaver.
Давайте же сделаем для нашего сайта такую полосу навигации.
Сначала заготовим набор графических изображений. На каждую гиперссылку нам понадобятся четыре изображения:
отображаемое в обычном состоянии;
отображаемое, когда пользователь помещает над ним курсор мыши;
отображаемое в "нажатом" состоянии (когда страница, на которую указывает эта гиперссылка, загружена);
отображаемое в "нажатом" состоянии, когда пользователь помещает над ним курсор мыши.
Создадим набор небольших графических изображений в любом графическом редакторе, поддерживающем формат GIF. Он будет включать:
белую надпись на черном фоне, отображаемую в обычном состоянии;
красную надпись на черном фоне, отображаемую, когда пользователь помещает над ним курсор мыши;
черную надпись на белом фоне, отображаемую в "нажатом" состоянии;
красную надпись на белом фоне, отображаемую в "нажатом" состоянии, когда пользователь помещает над ним курсор мыши.
Создадим в папке Pics подпапку Navbar. Сохраним все полученные файлы в ней, дав им имена в соответствии со следующим соглашением:
<имя страницы >_up.gif — для изображений, отображаемых в обычном состоянии;
<имя страницы>_over.gif — для изображений, отображаемых, когда пользователь помещает над ними курсор мыши;
<имя cmpaницы>_down.gif — для изображений, отображаемых в "нажатом" состоянии;
<имя страницы>_overdown.gif — для изображений, отображаемых в "нажатом" состоянии, когда пользователь помещает над ним курсор мыши.
Всего у вас должно получиться 20 файлов изображений. Что ж, вам придется здорово потрудиться... (Вообще-то для таких дел лучше использовать специализированные пакеты Web-графики, например Macromedia Fireworks. Они автоматически формируют все необходимые изображения для полос навигации и создают соответствующий HTML-код и JavaScript-код, "оживляющий" их. Но описание этих пакетов выходит за рамки данной книги.)
Подготовив изображения, задайте параметры Web-страницы. Как и в других страницах, отображаемых в остальных фреймах, цвет фона будет черным, цвет текста — белым... Короче говоря, подставьте те же значения, что и у страницы основного содержимого. Помните: все страницы сайта должны выглядеть идентично.
Чтобы создать полосу навигации, поставьте текстовый курсор в левый фрейм и нажмите кнопку Navigation Bar (рис. 7.22) страницы Common панели объектов. Вы также можете выбрать пункт Navigation Bar подменю Interactive Images меню Insert. На экране появится диалоговое окно Insert Navigation Ваг, показанное на рис. 7.23.
Проблема с фреймами в старых версиях Navigator
А вот это уже не "функциональная особенность" некогда известной программы, а элементарная ошибка разработчиков. Старые версии Navigator неправильно отображают страницы наборов фреймов после того, как пользователь изменит размеры окна. И разработчики Dreamweaver, чтобы компенсировать невнимательность разработчиков фирмы Netscape, ввели в свой Web-редактор специальную функцию исправления данной ошибки.
Откройте в окне документа Dreamweaver страницу набора фреймов и выберите в меню Commands пункт Add/Remove Netscape Resize Fix. На экране появится небольшое окно-предупреждение, кратко описывающее проблему с фреймами в Navigator и то, что Dreamweaver может сделать для ее решения (рис. 7.27).
Работа с фреймами и наборами фреймов
А теперь выясним, что Dreamweaver позволит нам сделать с наборами фреймов и отдельными фреймами.
Работа с фреймами
Но хватит пустых разговоров! Давайте займемся делом и на конкретном примере рассмотрим принципы фреймового дизайна. Мы создадим новую версию нашего сайта, посвященного гипотетическому Web-дизайнеру Ивану Ивановичу Иванову, версию, основанную на фреймах. И, не мудрствуя лукаво, выберем для него схему, показанную на рис. 7.1.
Проверьте, создали ли вы новую папку Sample2. Также проверьте, не удалили ли вы старую версию сайта, находящуюся в папке Sample 1. Ведь одна из важнейших заповедей Web-дизайнера: не разбрасываться старыми материалами — они могут пригодиться для нового сайта. Проверили? Все на месте? Тогда вперед!
Прежде всего, введем в Dreamweaver информацию о новом сайте. Вы можете просто взять сайт Sample site 1 и заменить его имя, корневую папку и имя главной страницы, а можете и создать новый сайт "с нуля". Как это делается, было рассказано в главе 6. На вкладке Remote Info диалогового окна Site Definition в раскрывающемся списке Access выберите пункт None (см. рис. 6.3) — мы с вами нигде не будем публиковать этот сайт. И имя нашего сайта будет Sample site 2.
После этого создайте новую Web-страницу. Сейчас мы рассмотрим процесс создания фреймов...
Решение проблем с фреймами
Как вы знаете, ничего идеального на свете не бывает. Это утверждение относится и к фреймам.
Классический набор из четырех фреймов
Это очень удобно. Когда посетитель сайта щелкает по гиперссылке, обновляется только содержимое одной "форточки" (в которой отображается основное содержимое). Такой подход дает Web-дизайнеру два главных преимущества. Во-первых, страницы загружаются значительно быстрее, т. к. содержат только полезную информацию, без набора гиперссылок, заголовка, сведений об авторских правах и прочей вспомогательной информации. Во-вторых, не нужно всю эту дополнительную информацию дублировать на каждой странице сайта — достаточно создать специальные странички, содержащие ее части, а потом загрузить их в соответствующие "форточки". А если нам нужно изменить, скажем, адрес какой-нибудь гиперссылки, мы просто меняем его на одной-единственной страничке вместо того, чтобы просматривать все страницы сайта, на которых мы поместили данную гиперссылку.
Отлично! Теперь давайте назовем вещи своими именами. "Форточки", иначе говоря, части, на которые делится окно Web-обозревателя, — это и есть фреймы (от англ, frame — кадр). А набор таких частей назовем набором фреймов (по-английски — frameset). Способ же разработки Web-сайтов с использованием фреймов называется фреймовым дизайном.
Как же формируется набор фреймов? Что для этого необходимо?
Для этого нужна специально написанная Web-страница, в которой, собственно, и задаются параметры набора фреймов и самих фреймов. Там же указываются размеры фреймов и интернет-адреса страниц, которые будут в них загружены. Эта Web-страница практически всегда является главной, т. е. загружается при наборе адреса сайта в строке адреса Web-обозревателя.
Запомните, что такая страница не должна содержать никаких полезных данных, никакого текста — только определение набора фреймов. Но даже если бы она и содержала какой-то текст, Web-обозреватель все равно не отобразил бы его, т. к. он не знает, где его отобразить — все свободное пространство его окна будет задано набором фреймов.
Фреймы — достаточно давнее дополнение, введенное в язык HTML. Однако высокоученые головы из комитета W3C только недавно включили их в HTML-стандарт. В результате такой политики неприятия весьма полезного нововведения фреймы на сегодняшний день стали, наверное, самым "нестандартным" из элементов HTML. Старые программы Web-обозревателей поддерживают их по-разному, хотя более новые их версии и пытаются соблюдать стандарты.
А Web-дизайнеры используют фреймы уже достаточно давно. И применяют их настолько часто, что среди снобов от Web-дизайна они уже стали считаться банальностью. И зря!
Три горизонтальных фрейма
Там находятся следующие пункты:
Split Frame Left — создание фрейма слева от текущего;
Split Frame Right — создание фрейма справа от текущего;
Split Frame Up — создание фрейма сверху от текущего;
Split Frame Down — создание фрейма снизу от текущего.
Итак, сделайте текущим средний фрейм и выберите в подменю Frameset меню Modify пункт... правильно, Split Frame Left. Вы получите последний фрейм, который как раз и был нам нужен. Уменьшите его ширину — это делается так же, как и в случае с горизонтальными фреймами. У вас должно получиться нечто, похожее на то, что изображено на рис. 7.12
Готовый набор фреймов
Теперь дайте готовой странице с набором фреймов название "Иван И. Иванов" и сохраните ее, выбрав пункт Save All меню File — это позволит сохранить также содержимое всех фреймов. На экране появится стандартное диалоговое окно сохранения файла Windows, предлагающее вам сохранить сам набор фреймов под именем UntitledFrameset-l.htm. Сохраните его в корневой папке нового сайта под именем default.htm.
Теперь Dreamweaver будет поочередно предлагать вам сохранить содержимое каждого фрейма набора (не забывайте, что содержимое фрейма задает отдельная Web-страница). При этом фрейм, содержимое которого сохраняется в данный момент, выделяется толстой штриховой линией (рис. 7.13),
благодаря чему вы будете знать, что сохраняет Dreamweaver, и какое имя дать той или иной странице.
Толстая штриховая линия выделяет фрейм, чье содержимое сохраняется в данный момент
Все остальные страницы сайта сохраните в папке HTMLs. Странице со сведениями об авторских правах дайте имя Copyright.htm. Страницу, по умолчанию отображаемую во фрейме с основным содержимым, назовите Main.htm, страницу со списком гиперссылок — Nav.htm, а страницу с заголовком сайта — Header.htm.
Внимание!
Если вы преобразуете уже готовую Web-страницу в набор фреймов, Dreamweaver поместит содержимое этой страницы в текущий фрейм. Если это главная страница вашего сайта (default.htm), то вам придется перед созданием набора фреймов переименовать ее, иначе не удастся сохранить страницу с набором фреймов под именем default.htm.
Существует еще один способ создания фреймов. Сейчас мы с вами его рассмотрим.
Взгляните на рис. 7.12. Обратите внимание на толстую серую рамку, окружающую весь наш набор фреймов. Вы можете создавать новые фреймы набора, не пользуясь ни панелью объектов, ни меню, а просто захватив эту рамку мышью и перетащив на то место, где должна находиться граница вновь создаваемых фреймов. В частности, вы можете таким образом разбивать один фрейм на два.
Теперь можно сделать небольшой перерыв, после чего мы узнаем еще кое-что о фреймах и особенностях их поддержки Dreamweaver.
Примечание
Наборы фреймов описываются с помощью парного тега