ИНФОРМАЦИЯ,    ДИЗАЙН,    ПЕРЕВОДЫ,    РЕКЛАМА   .   .   .
w a p - с а й т
Информационный портал
Сегодня:  
admin@aranea.ru
+79068922256

  aranea.ru || Спецификация HTML 4.01 | 16. Фреймы

16. Фреймы

16.2. Разметка фреймов

16.2.1. Элемент FRAMESET
   Ряды и колонки
   Наборы вложенных фреймов
   Разделение данных по фреймам
16.2.2. Элемент FRAME
   Определение начального содержания фрейма
   Визуализация фрейма

HTML-документ, который описывает раскладку фреймов (называемый фреймовым документом [frameset document]), имеет другую разметку, отличную от HTML-документа без фреймов. Стандартный документ имеет один раздел HEAD и один - BODY. Документ с фреймами имеет HEAD и FRAMESET вместо BODY.

Раздел FRAMESET документа определяет раскладку просмотра (или видов) в главном окне устройства вывода. Дополнительно, раздел FRAMESET может содержать элемент NOFRAMES для предоставления альтернативного содержания устройствам вывода, которые не поддерживают фреймы, или не сконфигурированы для их показа.

Элементы, которые могут размещаться в элементе BODY, не должны появляться до первого элемента FRAMESET, иначе FRAMESET будет игнорироваться.

16.2.1 Элемент FRAMESET

<![ %HTML.Frameset; [
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- window subdivision-->
<!ATTLIST FRAMESET
  %coreattrs;                          -- id, class, style, title --
  rows        %MultiLengths; #IMPLIED  -- list of lengths,
                                          default: 100% (1 row) --
  cols        %MultiLengths; #IMPLIED  -- list of lengths,
                                          default: 100% (1 col) --
  onload      %Script;       #IMPLIED  -- all the frames have been loaded  -- 
  onunload    %Script;       #IMPLIED  -- all the frames have been removed -- 
  >
]]>

Определение атрибутов

rows = multi-length-list [CN]
Этот атрибут определяет раскладку горизонтальных фреймов. Он является списком, разделенных запятыми, значений в пикселях, процентах и относительных длинах. Значение по умолчанию 100%, что значит, ряд один.
cols = multi-length-list [CN]
Этот атрибут определяет раскладку вертикальных фреймов. Он является списком, разделенных запятыми, значений в пикселях, процентах и относительных длинах. Значение по умолчанию 100%, что значит, колонка одна.

Атрибуты, определенные в другом месте

  • id, class
  • title
  • style
  • onload, onunload

Элемент FRAMESET определяет раскладку главного окна пользователя в терминах прямоугольных участков.

Ряды и колонки

Установка атрибута rows определяет количество горизонтальных участков в наборе фреймов (frameset). Установка атрибута cols определяет количество вертикальных участков. Оба атрибута могут быть установлены одновременно для создания решетки.

Если атрибут rows не установлен, то каждая колонка простирается на всю длину страницы. Если атрибут cols не установлен, то каждый ряд простирается на всю ширину страницы. Если ни один из атрибутов не установлен, то фрейм занимает всю страницу.

Фреймы создаются слева направо для колонок и сверху вниз для рядов. Когда оба атрибута определены, то виды создаются слева направо в верхнем ряду, и слева направо во втором ряду и т.д.

Первый пример делит экран вертикально на две части (т.е. создает верхнюю и нижнюю половины).

<FRAMESET rows="50%, 50%">
...the rest of the definition...
</FRAMESET>

Следующий пример создает три колонки: вторая имеет фиксированную ширину 250 пикселей (полезно, например, для включения изображения с известным размером). Первая колонка получает 25% оставшегося пространства, а третья - 75%.

<FRAMESET cols="1*,250,3*">
...the rest of the definition...
</FRAMESET>

Следующий пример создает решетку участков 2x3.

<FRAMESET rows="30%,70%" cols="33%,34%,33%">
...the rest of the definition...
</FRAMESET>

Для следующего примера, предположим, что окно браузера имеет ширину в 1000 пикселей. Первому виду распределено 30% всей высоты (300 пикселей). Второму виду определено точно 400 пикселей. Остается 300 пикселей, которые делятся между другими двумя фреймами. Высота четвертого фрейма определяется как "2*", так что он в два раза больше по высоте, чем третий фрейм, чья высота определена только как "*" (это эквивалентно 1*). Поэтому, третий фрейм будет высотой 100 пикселей, а четвертый будет высотой 200 пикселей.

<FRAMESET rows="30%,400,*,2*">
...the rest of the definition...
</FRAMESET>

Абсолютные длины, которые не суммируются в 100% реально доступного пространства, должны регулироваться устройством вывода. Когда это определено не полностью, то оставшееся пространство следует распределять пропорционально для каждого вида (фрейма). Когда размеры переоценены, то каждый вид должен быть уменьшен в соответствии с его определенной пропорцией из полного пространства.

Наборы вложенных фреймов

Наборы фреймов (Frameset) могут вкладываться друг в друга на любом уровне.

В следующем примере внешний FRAMESET делит доступное пространство на три равных колонки. Внутренний FRAMESET затем делит вторую область на два ряда неравной высоты.

<FRAMESET cols="33%, 33%, 34%">
     ...contents of first frame...
     <FRAMESET rows="40%, 50%">
        ...contents of second frame, first row...
        ...contents of second frame, second row...
     </FRAMESET>
     ...contents of third frame...
</FRAMESET>

Разделение данных по фреймам

Авторы могут разделять данные по нескольким фреймам с помощью включения этих данных через элемент OBJECT. Авторам следует включать элемент OBJECT в элемент HEAD фреймового документа и давать ему имя с атрибутом id. Любой документ, который не является содержанием фрейма в наборе фреймов, может обращаться к этому идентификатору.

Следующий пример иллюстрирует, как сценарий может обращаться к элементу OBJECT, определенному для всего набора фреймов (frameset):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>This is a frameset with OBJECT in the HEAD</TITLE>
<!-- This OBJECT is not rendered! -->
<OBJECT id="myobject" data="data.bar"></OBJECT>
</HEAD>
<FRAMESET>
    <FRAME src="bianca.html" name="bianca">
</FRAMESET>
</HTML>

<!-- In bianca.html -->
<HTML>
<HEAD>
<TITLE>Bianca's page</TITLE>
</HEAD>
<BODY>
...the beginning of the document...
<P>
<SCRIPT type="text/javascript">
parent.myobject.myproperty
</SCRIPT>
...the rest of the document...
</BODY>
</HTML>

16.2.2 Элемент FRAME

<![ %HTML.Frameset; [
<!-- reserved frame names start with "_" otherwise starts with letter -->
<!ELEMENT FRAME - O EMPTY              -- subwindow -->
<!ATTLIST FRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- link to long description
                                          (complements title) --
  name        CDATA          #IMPLIED  -- name of frame for targetting --
  src         %URI;          #IMPLIED  -- source of frame content --
  frameborder (1|0)          1         -- request frame borders? --
  marginwidth %Pixels;       #IMPLIED  -- margin widths in pixels --
  marginheight %Pixels;      #IMPLIED  -- margin height in pixels --
  noresize    (noresize)     #IMPLIED  -- allow users to resize frames? --
  scrolling   (yes|no|auto)  auto      -- scrollbar or none --
  >
]]>

Определение атрибутов

name = cdata [CI]
Этот атрибут присваивает имя текущему фрейму. Это имя можно использовать как цель для последующих ссылок.
longdesc = uri [CT]
Этот атрибут определяет ссылку для длинного описания фрейма. Это описание должно дополнять короткое описание, предоставленное атрибутом title, и может быть полезным для не визуальных устройств вывода.
src = uri [CT]
Этот атрибут определяет место начального содержания, включаемого во фрейм.
noresize [CI]
Когда присутствует этот булевый атрибут, то он сообщает устройству вывода, что для фреймового окна нельзя изменить размер.
scrolling = auto|yes|no [CI]
Этот атрибут определяет информацию о скроллинге для фреймового окна. Возможные значения:
  • auto: Это значение сообщает устройству вывода предоставить фреймовому окну устройство прокрутки, если необходимо. Это значение по умолчанию.
  • yes: Это значение сообщает устройству вывода всегда предоставлять устройство прокрутки фреймового окна.
  • no: Это значение сообщает устройству вывода не предоставлять фреймовому окну устройство прокрутки.
frameborder = 1|0 [CN]
Этот атрибут предоставляет устройству вывода информацию о границах фрейма. Возможные значения:
  • 1: Это значение сообщает устройству вывода нарисовать разделитель между этим фреймом и каждым соседним фреймом. Это значение по умолчанию.
  • 0: Это значение сообщает устройству вывода не рисовать разделитель между этим фреймом и каждым соседним фреймом. Обратите внимание на то, что сепаратор (линия) может быть нарисован соседним фреймом, если граница последнего определена.
marginwidth = pixels [CN]
Этот атрибут определяет размер пространства, которое остается между содержанием фрейма и боковыми (левым и правым) полями. Значение должно быть больше нуля (в пикселях). Значение по умолчанию зависит от устройства вывода.
marginheight = pixels [CN]
Этот атрибут определяет размер пространства, которое остается между содержанием фрейма и верхним и нижним полями. Значение должно быть больше нуля (в пикселях). Значение по умолчанию зависит от устройств вывода.

Атрибуты, определенные в другом месте

  • id, class
  • title
  • style

Элемент FRAME определяет содержание и вид одного фрейма.

Определение начального содержания фрейма

Атрибут src определяет начальный документ, который будет содержать фрейм.

Следующий пример HTML-документа:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contents_of_frame1.html">
      <FRAME src="contents_of_frame2.gif">
  </FRAMESET>
  <FRAME src="contents_of_frame3.html">
  <FRAME src="contents_of_frame4.html">
</FRAMESET>
</HTML>

создаст раскладку фреймов, похожую на:

 ------------------------------------------
|Frame 1     |Frame 3       |Frame 4       |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
-------------|              |              |
|Frame 2     |              |              |
|            |              |              |
|            |              |              |
 ------------------------------------------

и приведет к тому, что устройство вывода загрузит каждый файл в отдельный вид.

Содержание фрейма не может находится в том же документе, что и определение фрейма.

НЕКОРРЕКТНЫЙ ПРИМЕР:

Следующее определение набора фреймов не корректно для HTML, так как содержание второго фрейма находится в том же документе, что и набор фреймов (frameset).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET cols="50%,50%">
  <FRAME src="contents_of_frame1.html">
  <FRAME src="#anchor_in_same_document">
  <NOFRAMES>
  ...some text...
  <H2><A name="anchor_in_same_document">Important section</A></H2>
  ...some text...
  </NOFRAMES>
</FRAMESET>
</HTML>

Визуализация фрейма

Следующий пример иллюстрирует использование декоративных атрибутов FRAME. Мы определяем, что фрейм 1 не выводит полосу прокрутки. Фрейм 2 оставит пространство вокруг своего содержания (вначале, файл изображения), и размер этого фрейма нельзя изменить. Граница не появляется между фреймами 3 и 4. Границы будут (по умолчанию) между фреймами 1, 2 и 3.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contents_of_frame1.html" scrolling="no">
      <FRAME src="contents_of_frame2.gif" 
                marginwidth="10" marginheight="15"
                noresize>
  </FRAMESET>
  <FRAME src="contents_of_frame3.html" frameborder="0">
  <FRAME src="contents_of_frame4.html" frameborder="0">
</FRAMESET>
</HTML>

← Назад | Вперед →
Copyright © 2006 -  aranea.ru