Главная / HTML Основы / Фреймы

Фреймы


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

Построение Web-страницы с фреймами

Рисунок 1.1

Для работы с набором фреймов, изображенном на рисунке необходимо создать четыре HTML-документа. Начнем с документа с описанием набора фреймов используется тэг <FRAMESET>. В HTML-документе, тег <FRAMESET> заменяет тег <BODY>, как показано ниже:

1   <HTML>
2     <HEAD>
3       <TITLE> Заголовок документа </TITLE>
4         <META HTTP-EQUIV="Content-Type"
5               CONTENT="text/html; CHARTER=windows-1251">
6     </HEAD>
7     <FRAMESET>
8     <!-- Здесь располагается описание фреймов -->
9     </FRAMESET>
10    <NOFRAMES>
11    <!--Здесь располагается описание Web-страницы для браузеров, которые не могут 
                 отображать фреймы -->
12    </NOFRAMES>
10  </HTML>

Сущестенно, что если вы включаете тег <FRAMESET> в HTML-документ, то не можете одновременно включать тег <BODY>. Эти теги взаимно исключающие. Кроме того, в определении набора фреймов не должно быть тегов, не относящихся к описанию фреймов, за исключением одного особенного случая — тега <NOFRAMES>, который служит для описания содержимого Web-страницы ,отображаемой в браузерах, не поддерживающих работу с фреймами (если таковые еще имеются). Тег <FRAMESET> содержит только описания для фреймов и поддерживает обработку двух событий:

  • ONLOAD — загрузки описания набора фреймов в браузер;
  • ONUNLOAD — выгрузка документа с описанием фреймов из браузера;

Кроме того, тег <FRAMESET> поддерживает два атрибута: COLS и ROWS, один из которых обязательно нужно включить в определение набора фреймов. Формат определения набора фреймов имеет вид:

    <FRAMESET COLS="ширина фрейма, ширина фрейма, ...">

или

    <FRAMESET ROWS="высота фрейма, высота фрейма, ...">

Атрибут COLS предписывает браузеру разбить экран на несколько вертикальных фреймов, ширина которых определяется аргументами COLS. Каждый аргумент отделяется л\друг от друга запятой. Вы можете определить ширину каждого фрейма либо непосредственно в пикселах , либо в процентах от ширины окна, либо с помощью звездочки (*). При использовании звездочки, браузер отводит данному фрейму максимально возможную ширину.

Следующее определение набора фреймов

<FRAMESET COLS="100,50%,*">

создает три вертикальных фрейма, самый левый из которых имеет ширину 100 пикселей, второй — 50% от ширины окна браузера, а третий занимает оставшееся пространство. На рисунке 1.2 представлен данный набор фреймов, исходный текст примера находится в файле example1.txt.

Атрибут COLS задает число вертикальных фреймов в наборе фреймов

Рисунок 1.2



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

  

Для создания набора трех одинаковых вертикальных фреймов лучше всего записать COLS="*,*,*". В этом случае вам не придется задумываться о процентах, так как браузер автоматически задаст одинаковую ширину для каждого фрейма.



Атрибут ROWS выполняет те же функции, что и атрибут COLS за исключением того, что он создает горизонтальные фреймы. Например, для разделения экрана на два фрейма равной высоты, как показано на рисунке 1.3 (файл example2.txt) нужно записать следующее:

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

Того же эффекта можно добиться и другим способом:

    <FRAMESET ROWS="*,*">

Атрибут ROWS задает число горизонтальных фреймов в наборе фреймов

Рисунок 1.3

Если вы попытаетесь самостоятельно воспроизвести последние два примера, закодировав теги <FRAMESET>...</FRAMESET>, то обнаружите, что фреймы не отображаются. Такой результат связан с тем, что не определено содержимое для фреймов набора. Чтобы определить его, нужно использовать тег <FRAME>, имеющий следующий формат:

    <FRAME SRC="Указатель ресурса для документа">

В теге <FRAME> можно указать дополнительные атрибуты, перечисленные в таблице.

Атрибут Значение Описание
SCROLLING AUTO (задается по умолчанию) Если содержимое фреейма занимает больше места, чем ему отведено, то браузер автоматически добавляет вертикальную и горизонтальную полосы прокрутки, чтобы пользователь мог посмотреть оставшуюся часть документа в фрейме.
SCROLLING NO В данном случае полосы прокрутки не будут появлятся ни при каких условиях.
SCROLLING YES Полосы прокрутки будут выводится всегда вне зависимости от потребности в них.
NORESIZE   По умолчанию, пользователь может менять положение границ фреймов, перетаскивая их с помощью мыши. Для блокировки изменения размеров фрейма и используется этот атрибут.
 FRAMEBORDER  0 или 1 При задании значения атрибута, равного 0, границы фрейма не отображаются. Значение по умолчанию равно 1.
 MARGINHEIGHT  Значение в пикселах Этот атрибут позволяет указать размер верхнего и нижнего полей фрейма.
 MARGINWIDTH  Значение в пикселах Этот атрибут позволяет указать размер левого и правого полей фрейма.
NAME Строка Имя фрейма, используется в атрибуте TARGET тега <A> для загрузки документа в фрейм.

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

Еще один атрибут тега <FRAMESET> позволяет управлять шириной границ. Атрибут BORDER задает толщину всех границ набора фрейма в пикселах. Указывать атрибут BORDER можно только в самом внешнем теге <FRAMESET> для семейства вложеных друг в друга наборов фреймов. Все остальные значение этого атрибута игнорируются.

Вернемся к рисунку 1.1. Каким образом можно создать такую структуру фреймов? На рисунке 1.1 верхняя часть окна браузера содержит два вертикальных фрейма, а нижний фрейм занимает всю ширину окна. Для создания документа, определяющего набор фреймов с такой структурой, необходимо создать следующий HTML-файл:

    <HTML>
     <HEAD>
       <TITLE>Два вертикальных фрейма для сложной структуры (20.html)</TITLE>
         <META HTTP-EQUIV="Content-Type"
               CONTENT="text/html; CHARTER=windows-1251">
     </HEAD>
     <FRAMESET ROWS="80%,*">
         <FRAME SRC="21.html">
         <FRAME SRC="22.html" NAME="3">
     </FRAMESET>
   </HTML>

Данный HTML-дркумент описывает набор фреймов, расположеных горизонтально, причем высота верхнего фрейма занимает 80% высоты окна. В верхней фрейм загружается документ 21.html, который сам является набором фреймрв.

    <HTML>
     <HEAD>
       <TITLE>Два горизонтальных фрейма для сложной структуры (21.html)</TITLE>
         <META HTTP-EQUIV="Content-Type"
               CONTENT="text/html; CHARTER=windows-1251">
     </HEAD>
     <FRAMESET COLS="30%,*">
         <FRAME SRC="23.html" NAME="1">
         <FRAME SRC="24.html" NAME="2">
     </FRAMESET>
   </HTML>

Этот документ описывает два вертикальных фрейма в верхней части окна. В левом фрейме отображается документ 23.html , в правом — 24.html, а в нижнем — 22.html.

Эти документы однотипны, поэтому приведем только один из них.

   <HTML>
     <HEAD>
       <TITLE>Левый документ для сложной фреймовой структуры (23.html)</TITLE>
         <META HTTP-EQUIV="Content-Type"
               CONTENT="text/html; CHARTER=windows-1251">
     </HEAD>
     <BODY BGCOLOR="#FFFFFF">
     <TABLE BORDER=0 WIDTH="100%" HEIGHT="100%">
         <TR><TD></TD><TD></TD></TR>
         <TR><TD></TD>
             <TD ALIGN="CENTER" VALIGN="MIDDLE" WIDTH="30%" HEIGHT="30%">
                  <FONT SIZE=7><B>1</B></FONT>
             </TD><TD></TD>
         </TR>
         <TR><TD></TD><TD></TD></TR>
     </TABLE>
     </BODY>
   </HTML>

Составной набор фреймов (документ 20.html) приведен на рисунку 1.4.

Составной набор фреймов

Рисунок 1.4



Не рекомендуется создавать наборы с числом фреймов, превышающим 3-4, из-за замедления загрузки документов и перерысовки фреймов.



Решим теперь вопрос о том, как работать с гиперссылками в HTML-страницах с фреймами. Если, например, в левом фрейме создать гиперссылку:

    <A HREF="23.html">Документ 23.html </A>

то документ 23.html будет загружен в том же фрейм. Для загрузки документа в правый фрейм в теге <A> необходимо указать атрибут TARGET="2", где "2" — имя фрейма, заданое в атрибуте NAME тега <FRAME>.

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

Наконец, для замены набора фреймов другим документом в окне браузера необходимо в качестве значения атрибута TARGET указать специальное имя _top. Продолжая рассмотренный выше пример, щелчек мышью на гиперссылке

    <A HREF="23.html" TARGET="_top">Документ 23.html </A>

приведет к отображению в центре окна цифры 1.

Наверх     

Основы HTML

      На главную      by ktima
Copyright © 2003 JTSOFT
Сайт управляется системой uCoz