Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к ПР5.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.91 Mб
Скачать

3. Раскладки фреймов

В листинге 1 в качестве примера приведен код горизонтальной раскладки трех фреймов, который размещается в установочном файле. Если в теге <frameset> заменить атрибут cols на rows, то получится вертикальная раскладка фреймов. Оба варианта показаны на рис справа. В данном примере загружаемые во фреймы html-файлы содержат только строки вида "Фрейм 1".

Листинг 1.

Б олее сложную раскладку фреймов легко получить, вкладывая один контейнер <frameset> в другой. Здесь сначала окно браузера разбивается на два ряда, а затем второй ряд разбивается на две колонки.

На рис. слева показан пример раскладки четырех фреймов. В данном случае окно браузера разбивается на три ряда, второй из которых затем разбивается на две ко­лонки.

С овременные браузеры интерпретируют тег <frameset>, в котором одновремен­но указываются и cols, и rows. При этом раскладка фреймов получается в виде прямоугольной сетки (рис. слева). В данном случае количество ячеек прямоугольной сетки совпало с количеством тегов <frame>. Документы загружаются во фреймы слева направо в порядке следования соответствующих тегов <frame>.

Если ячеек раскладки фреймов окажется меньше, чем тегов <frame>, то будут соз­даны только те фреймы, для которых ячейки заданы. В противном случае будут соз­даны все фреймы.

Однако отображение рамок между фреймами, выполняемое по умолчанию, будет зависеть от браузера. Н а рис. слева показан вид раскладки четырех фреймов в сетке из шести ячеек в браузерах Firefox, Opera и Internet Explorer. Браузе­ры Safari и Chrome отображают данную раскладку так же, как и Firefox. Если грани­цы между фреймами сделать невидимыми, то можно достичь одинакового отображе­ния фреймов во всех браузерах.

4. Декорации фреймов

Атрибуты cols и rows тега <frameset> задают количество и размеры фреймов, а атрибут src тегов <frame> определяет их содержимое. Остальные атрибуты пред­назначены для декорирования фреймов: определения границ и расстояний между фреймами, наличия полос прокрутки и других характеристик. Однако функциони­рование атрибутов для декорирования может быть различным в разных браузерах.

Рассмотрим атрибуты тега <frameset> и начнем с рамок между фреймами, кото­рые отображаются по умолчанию (т. е. если соответствующие атрибуты не указаны). При этом их внешний вид зависит от браузера. Рамки между фреймами по умолча­нию в браузерах Internet Explorer, Firefox и Opera показаны на рис. выше.

Д ля отмены отображения или задания ширины рамок в пикселах служит атрибут border. Так, border="0" отменяет отображение рамок во всех браузерах. Указание в качестве значения числа определяет толщину рамок в пикселах. На рис. слева пока­заны три фрейма в Internet Explorer и Opera при атрибуте border="30". Браузер Opera. показывает границы как Internet Explorer, a Safari и Chrome - как Firefox. Однако следует иметь в виду, что если значение атрибута border меньше 5, то Internet Explorer не показывает рамки.

Атрибут frameborder предназначен для указания, отображать границы между фреймами или нет. Значение 0 или no отменяет отображение границ во всех браузе­рах, кроме Opera, который оставляет между фреймами бледно-серые тонкие линии. Значение 1 устанавливает отображение границ. Значение yes устанавливает отображение границ только в Internet Explorer, Firefox и Opera (в виде тонких линий), а в Safari и Chrome - нет. Заметим, что указание числа в качестве значения атрибута frameborder не задает ширину границ. Таким образом, атрибуту frameborder следует присваивать только значения 0 или 1 в качестве заменителей логических значений.

Атрибут framespacing, принимающий в качестве значения число, устанавливает расстояние между фреймами в пикселах. Однако данный атрибут действует только в браузерах Internet Explorer и Opera, а в остальных браузерах отображаются обыч­ные границы.

Атрибут bordercolor устанавливает цвет границ между фреймами во всех брау­зерах, кроме Opera.

Итак, чтобы отменить отображение рамок (границ) между фреймами во всех браузерах достаточно атрибута border= "0". Чтобы отобразить границы толщины и внешнего вида, принятые в каждом браузере по умолчанию, атрибуты border, frameborder и framespacing следует не упоминать совсем. Чтобы отобразить гра­ницы заданных размеров, следует применить атрибут border="толщина". При этом можно задать цвет границ посредством атрибута bordercolor, но в Opera он не будет установлен.

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

Теперь рассмотрим атрибуты тега <frame>. По умолчанию полосы прокрутки у фрейма появляются лишь при необходимости, занимая какую-то часть простран­ства фрейма. Такой режим, задаваемый явно с помощью атрибута scrolling="auto", подходит для фреймов, в которые предполагается загружать документы большого или заранее неизвестного объема. Чтобы запретить появление полос прокрутки применяется значение nо. Например, фреймы, предназначенные для отображения заголовка сайта, обычно делают непрокручиваемыми.

Отображение полос прокрутки в любых обстоятельствах должно обеспечивать­ся атрибутом scrolling="yes". Однако этот режим выполняется только браузера­ми Firefox, Opera и Internet Explorer 8.0 в режиме предоставления обратной совмес­тимости. Safari, Chrome и Internet Explorer 8.0 в стандартном режиме работают так, как если бы было задано значение auto. Впрочем, трудно придумать ситуацию, в которой необходимо обеспечить принудительное отображение полос прокрутки.

По умолчанию пользователь может с помощью мыши изменить размеры фрей­ма, перетаскивая мышью окружающие его рамки. Запрещает изменение размеров

фрейма атрибут noresize="noresize". Например, фреймы с заголовком сайта или навигационной панелью обычно за­щищают от геометрических трансфор­маций пользователем. Для разрешения изменения размеров фрейма атрибут noresize просто не применяют. Напри­мер, посетителю сайта можно позволить изменить размеры фреймов с информа­ционным содержимым. Однако следует иметь в виду, что изменение пространст­ва одного фрейма влечет изменение про­странства смежных фреймов. В частно­сти, если все фреймы, смежные с данным, неизменяемы, то и размеры данного фрейма изменить нельзя (закостенелое окружение ограничивает свободу, даже если она декларирована).

А трибут frameborder со значениями 1 или 0 предназначен для показа или скрытия границ отдельного фрейма соответственно. В теге <frameset> можно ука­зать атрибут frameborder="0", а В теге <frame> - frameborder="1", чтобы отобразить границы только данного фрейма. Однако атрибут frameborder не работает в Firefox 3.6, а в других браузерах он действует по-разному.

На рис. слева показано отображение границ только третьего фрейма в браузерах Internet Explorer и Safari. Chrome отображает границы так же, как и Safari, a Opera - примерно так же, как и Internet Explorer.

Атрибут bordercolor в теге <frame> предназначен для задания цвета границ фрейма при условии, что последние отображаются. Однако в Internet Explorer и Firefox этот атрибут действует по-разному, a Opera, Safari и Chrome вообще игно­рируют его.

Атрибут marginheight задает ширину в пикселах отступов содержимого фрейма от его верхней и нижней границ, a marginwidth - от левой и правой границ, неза­висимо от того, отображаются ли сами границы. Отступы имеют цвет фона загру­женного в данный фрейм документа. Атрибуты marginheight и marginwidth обычно применяют тогда, когда не отображают рамки между фреймами.