Онлайн учебники на TEPKA.ru

Учебник по HTML 4

       

Примеры фреймов в HTML

В этом разделе представлены некоторые типичные примеры определений фреймов в HTML.

Возвратимся к примеру, который приведен в начале данного раздела (рис. 5.3). Этот пример использует вложенную структуру <FRAMESET>. Внешний тег <FRAMESET> создает три строки высотой, соответственно, в 25, 50 и 25 процентов от общей высоты окна просмотра:

<FRAMESET ROWS="25%,50%,25%">.

Внутри этой области определения первая и последняя строки представляют собой простые фреймы:

<FRAME SRC="header.htm"> <FRAME SRC="footer.htm">

Каждая из этих строк заполняет всю ширину экрана. Первая строка в верхней части экрана занимает 25 процентов высоты, и третья строка в нижней части также занимает 25 процентов высоты. Между ними, однако, располагается вложенный тег <FRAMESET>:

<FRAMESET COLS="25%,75%">

<FRAME SRC="list.htm">

<FRAME SRC="info.htm">

</FRAMESET>

Этот HTML тег определяет два столбца, на которые разбивается средняя строка экрана. Строка, в которой располагаются эти два столбца, занимает 50 процентов высоты экрана, что определено во внешнем теге <FRAMESET>. Левый столбец использует 25 процентов от ширины экрана, в то время как правый столбец занимает оставшиеся 75 процентов ширины.

Фреймы для этих столбцов определены внутри вложенной пары тегов <FRAMESET> и </FRAMESET>, в то время как определение фреймов для первой и последней строки записывается вне этой пары, но внутри внешнего <FRAMESET> в соответствующем порядке.

Структуру записи легко понять, если воспринимать вложенный блок <FRAMESET> как отдельный элемент <FRAME>. В нашем примере внешний тег <FRAMESET> определяет три строки. Каждая из них должна быть заполнена. В данном случае они заполняются сначала отдельным элементом <FRAME>, далее — вложенным блоком <FRAMESET> шириной в два столбца, а затем еще одним элементом <FRAME>.

Теперь может возникнуть вопрос, можно ли в качестве значения параметра SRC тега <FRAME> задать имя файла, который, в свою очередь, содержит описание структуры фреймов. Да, это допустимо. В данном случае тег <FRAME> будет использован для указания на HTML-документ, который является фреймовой структурой и используется в качестве отдельного фрейма.

Вернемся к примеру и заменим вложенный <FRAMESET> на отдельный <FRAME>. Естественно, потребуется два HTML-файла вместо одного, так как вложенный <FRAMESET> теперь будет располагаться в отдельном документе. Приведем содержимое первого (внешнего) файла:

<HTML>

<HEAD>

</HEAD>

<FRAMESET ROWS="25%,50%,25%">

<FRAME SRC="header.htm">

<FRAME SRC="frameset.htm">

<FRAME SRC="footer.htm">

</FRAMESET>

<NOFRAMES>

Ваш браузер не может отображать фреймы

</NOFRAMES>

</HTML>

Второй файл с именем frameset.htm содержит следующий код:

<HTML>

<HEAD>

</HEAD>

<FRAMESET COLS="25%,75%">

<FRAME SRC="list.htm">

<FRAME SRC="info.htm">

</FRAMESET>

</HTML>

В этом случае верхняя и нижняя строки ведут себя по-прежнему. Но вторая строка теперь является простым фреймом, как и другие. Однако файл frameset.htm, на который указывает параметр SRC, определяет собственную структуру фреймов. В результате на экране будет отображено в точности то же самое, что и в первоначальном примере.

Примечание

Принципиально возможно создать вложенные структуры <FRAMESET>, использующие теги <FRAME>, которые ссылаются на тот же самый файл с описанием структуры фреймов, однако этого делать не следует. Такая ситуация приведет к бесконечной рекурсии и не даст возможности дальнейшей работы. Некоторые браузеры контролируют подобную ситуацию и предотвращают возможность сбоя. Если адрес, записанный в SRC, совпадает с одним из предыдущих адресов в иерархии фреймов, то он игнорируется, как если бы параметр SRC отсутствовал вообще.

Совет

Используя вложенные структуры <FRAMESET> в различных комбинациях, возможно создать практически любую сетку фреймов, которую можно себе представить. Однако помните, что следует создавать удобный для пользователя интерфейс, а не просто демонстрировать свое умение работать с фреймами.

Приведем пример создания регулярной прямоугольной сетки фреймов:

<HTML>

<HEAD>

</HEAD>

<FRAMESET ROWS="*,2*" COLS="20%, 30%, 40%">

<FRAME SRC="docum1.htm">

<FRAME SRC="docum2.htm">

<FRAME SRC="docum3.htm">

<FRAME SRC="docum4.htm">

<FRAME SRC="docum5.htm">

<FRAME SRC="docum6.htm">

</FRAMESET>

</HTML>

Этот пример создает сетку фреймов с двумя строками и тремя столбцами (рис. 5.6). Так как определен набор из шести фреймов, необходимо также дать шесть определений отдельных фреймов <FRAME>. Обратите внимание, что определения фреймов даются построчно. То есть первый тег <FRAME> определяет содержимое первой колонки в первой строке, второй — второй колонки, а третий заканчивает определение данных для последней колонки первой строки. Последние три фрейма затем заполняют столбцы второй строки.

HTML

Рис. 5.6. Сетка фреймов 2 на 3

Заметим также, что сумма значений процентов в параметре COLS равна не 100, а только 90 процентов. В этом нет ничего страшного, так как браузер автоматически пропорционально изменит ширину колонок, чтобы ликвидировать это противоречие.

 

 

 

Top.Mail.Ru
Top.Mail.Ru