Таблица 7.3. Данные полосы навигации
Страница | Element Name | When Clicked, Go To URL |
Главная | Main | Main . htm |
Проекты | Projects | Projects.htm |
Увлечения | Passions | Passions.htm |
Ссылки | Links | Links . htm |
Об авторе | About | About . htm |
В раскрывающемся списке in должен быть выбран пункт Main (имя фрейма основного содержимого сайта). Для элемента Main (страница основного содержимого сайта, отображаемая по умолчанию) включите флажок Show "Down Image" Initially, т. к. он должен быть по умолчанию "нажатым". В раскрывающемся списке Insert выберите пункт Vertical, т. к. полоса навигации в нашем случае должна быть вертикальной. Остальные элементы управления не трогайте. После этого нажмите кнопку ОК.
Осталось немного подредактировать фрейм и его содержимое вручную. Установите значения параметров Margin Width и Margin Height для фрейма в ноль, чтобы не было этих отвратительных отступов слева и сверху. Потом выделите таблицу и установите параметр Width в 100%, чтобы она заняла всю ширину фрейма. Осталось выделить все ячейки таблицы и выставить параметр Horz в Center, a Vert — в Middle. Вы помните, что обозначают эти параметры?
Посмотрите на рис. 7.24. Как видите, Dreamweaver здорово постарался, сделав за нас всю сложную работу по созданию "живой" полосы навигации. Если вы просмотрите сгенерированный им HTML-код, то увидите, как много работы пришлось ему проделать: сформировать таблицу, разместить в ней все указанные вами графические изображения, превратить их в гиперссылки и — главное — создать сценарии, которые будут ими управлять. Согласитесь, вручную такое не сразу сделаешь.
Рис. 7.24. Готовая полоса навигации
Теперь сохраните все фреймы, выбрав пункт Save All Frames в меню File. И откройте страницу в окне Web-обозревателя. Попробуйте поместить курсор мыши над каким-нибудь элементом полосы навигации и посмотрите, что получится. Пощелкайте по нему.
Как видите, даже очень сложные вещи делаются в Dreamweaver исключительно просто. Например, полоса навигации с активными изображениями для начинающего Web-дизайнера — весьма сложная задача: нужно хорошо знать не только язык описания Web-страниц HTML, но и язык написания сценариев JavaScript. И если с HTML, как правило, проблем нет, то с JavaScript — есть...
Хорошо! Мы сделали полосу навигации и поместили ее во фрейме. Но сайт наш, как и все на свете, изменяется. Что если нам вдруг понадобится добавить новый элемент или изменить графические изображения? Для этого просто выделите полосу навигации (любой ее элемент) и выберите в меню Modify пункт Navigation Bar. На экране появится диалоговое окно Modify Navigation Ваг, аналогичное уже знакомому вам окну Insert Navigation Bar (см. рис. 7.23), в котором вы сможете изменить все, что нужно.
Оптимизация фреймов
Создав наш первый работающий набор фреймов, можно подумать о его оптимизации.
Уменьшение объема и сложности HTML-кода
Если вы создаете достаточно сложные наборы фреймов, то можете столкнуться с тем, что Dreamweaver не очень оптимально формирует соответствующий HTML-код. В частности (да вы и сами это видели), Dreamweaver не может формировать наборы более чем из двух фреймов. Судя по всему, разработчики программы облегчили себе задачу за счет увеличения объема и сложности получаемого HTML-кода. Конечно, это можно стерпеть, если учесть, как хорошо Dreamweaver справляется со своими задачами в других случаях, но все же проблема остается.
Взгляните на код, сформированный Dreamweaver для нашего набора фреймов (автор слегка сократил его, убрав не относящиеся к делу атрибуты тегов):
<FRAMESET ROWS="*,54"> <FRAMESET ROWS="30,*">
<FRAME NAME="Header" SRC="/HTMLs/Header.htm">
<FRAMESET COLS="100,399">
<FRAME NAME="Nav" SRC="/HTMLs/Nav.htm">
<FRAME NAME="Main" SRC="/HTMLs/Main.htm">
</FRAMESET>
</FRAMESET>
<FRAME NAME="Copyright" SRC="/HTMLs/Copyright.htm"> </FRAMESET>
Как видите, Dreamweaver формирует только простые наборы из двух фреймов. А если фреймов в одном простом наборе должно быть больше, используются сложные наборы с многократным вложением.
В частности, нам был нужен набор из трех горизонтальных фреймов. Поскольку Dreamweaver формирует только двухфреймовые простые наборы, он создал два вложенных набора, по два фрейма в каждом. (Соответствующий код выделен полужирным шрифтом.) Давайте немного упростим этот фрагмент кода. У нас получится вот что:
<FRAMESET ROWS="30,*,54">
<FRAME NAME="Header" SRC="/HTMLs/Header.htm">
<FRAMESET COLS="100,399">
<FRAME NAME="Nav" SRC="/HTMLs/Nav.htm">
<FRAME NAME="Main" SRC="/HTMLs/Main.htm">
</FRAMESET>
<FRAME NAME="Copyright" SRC="/HTMLs/Copyright.htm">
</FRAMESET>
Если раньше у нас была трехкратная вложенность фреймов, то теперь мы обошлись двукратной, совместив два двухфреймовых простых набора в один трехфреймовый. (Этот фрагмент кода выделен полужирным шрифтом.) Как видите, HTML-код набора фреймов стал проще и компактнее.
Откройте страницу default.htm в окне документа, переключитесь в режим кода и внесите эти изменения, после чего снова переключитесь в режим страницы. Что мы видим? В окне документа ничего не изменилось. Как видите, Dreamweaver правильно обрабатывает простые наборы из любого количества фреймов. Вы можете щелкать по ним мышью в окне фреймов, устанавливать значения параметров в редакторе свойств, заполнять их текстом в окне документа. Более того, если вы выберете набор из трех фреймов, Dreamweaver правильно отобразит его структуру в редакторе свойств (рис. 7.25). Получается, что Dreamweaver все-таки поддерживает простые наборы с количеством фреймов более двух.
Рис. 7.25. Структура набора из трех фреймов
Ускорение обработки фреймов
Приведем несколько советов, которые помогут Web-обозревателю быстрее обработать и отобразить наборы фреймов.
1. При указании размеров фреймов (высоты или ширины) по возможности используйте абсолютные (в пикселах), а не относительные (в процентах) единицы измерения. Помните, что для того, чтобы отобразить фрейм, Web-обозревателю нужно сначала получить его абсолютный размер. А если вы указали размер фрейма в относительных единицах, Web-обозреватель должен будет сначала вычислить соответствующий размер своего окна, что займет дополнительное время.
2. Внимательно проверяйте корректность интернет-адресов в атрибутах SRC тегов <FRAME>. Мало того, что обращение по несуществующему интернет-адресу занимает много времени, так один фрейм вашего набора останется "пустым". А нет ничего отвратительнее "пустого" фрейма.
3. Задавайте замещение <NOFRAMES> только в тех случаях, если оно действительно нужно. Помните, что любой лишний HTML-код замедляет загрузку Web-страницы, увеличивая ее в размерах. Уже говорилось по поводу замещений и повторять это нет смысла.
4. Оптимизируйте HTML-код, порождаемый Dreamweaver.
Решение проблем с фреймами
Как вы знаете, ничего идеального на свете не бывает. Это утверждение относится и к фреймам.
Недостатки фреймов и их преодоление
Вроде бы, фреймы всем хороши. Они позволяют разделить окно Web-обозревателя на несколько независимых "форточек", в каждой из которых может отображаться своя Web-страница. Таким образом, одна большая Web-страница делится на несколько маленьких, содержащих какую-либо часть большой страницы: заголовок, полосу навигации, сведения об авторских правах и основное содержимое. При этом когда пользователь щелкает по гиперссылке, происходит обновление только фрейма с основным содержимым; содержимое всех остальных фреймов остается неизменным.
Достоинства такого подхода очевидны. Во-первых, не нужно дублировать заголовок, полосу навигации и сведения об авторских правах на всех страницах сайта — достаточно поместить их один раз в соответствующие фреймы, где они и останутся. Во-вторых, сами страницы уменьшатся в размерах и станут быстрее загружаться.
На этом достоинства фреймов кончаются, и начинаются недостатки.
Недостаток первый: невозможность обновления содержимого сразу двух или нескольких фреймов. Давайте рассмотрим гипотетический сайт — каталог программ, структура фреймов которого показана на рис. 7.26.
Заголовок сайта | |
Список категорий программ (Интернет, офис, системные, утилиты, мультимедиа и т. д.) | Список программ выбранной категории |
Описание выбранной в списке программы, "снимок" экрана, ссылка для загрузки и т. д. | |
Сведения о правах разработчика сайта |
Рис. 7.26. Структура фреймов сайта — каталога программ
Предположим, пользователь щелкает одну из позиций списка категорий, расположенного в левом фрейме. Вам необходимо обновить содержимое фрейма списка программ, относящихся к выбранной категории, и вы это сделаете. Но, кроме того, нужно будет обновить содержимое фрейма описания выбранной программы, скажем, вывести описание первой или самой популярной программы в списке. Ведь если оставить в нем описание программы, относящейся совсем к другой категории, это будет, мягко говоря, некрасиво.
К несчастью, средствами HTML это сделать невозможно. Обычная гиперссылка HTML, описываемая парным тегом <А>, может указывать только на один файл. Если вы хотите по щелчку загружать сразу две страницы (или более — в данном случае это несущественно) в разные фреймы, вам придется писать сценарий на языке JavaScript. А это уже довольно сложная задача для начинающего Web-дизайнера. На первый раз можем посоветовать только постараться избежать использования таких наборов фреймов или же отказаться от фреймов вообще.