
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 обычно применяют тогда, когда не отображают рамки между фреймами.