Что такое фрейм в HTML?

Что такое фрейм в HTML? Frameset — это легкий способ создавать несколько отдельных областей прокрутки в окне браузера, а также удобный механизм для изменения содержимого фрейма.

Но у фреймов есть и существенные недостатки. Именно поэтому использовать их не рекомендуется. Хотя фреймы поддерживаются в HTML 4.01, их нет в HTML 5. На смену им пришли многофункциональные методы форматирования CSS. Главные недостатки фреймов:

  • Поисковым системам тяжело работать с фреймами;
  • Плохая совместимость с URL;
  • Фреймы недоступны для всех клиентских приложений;
  • Страницы, отображаемые во фреймах, трудно добавлять в закладки;
  • Частые проблемы при распечатке веб-страниц.

Обычно фреймы используют для создания отдельных областей с прокруткой в одном окне. Такой подход применяется в приложениях для мобильных и десктопных платформ. Примером такого приложения является проводник Windows. Окно проводника состоит из двух частей. В левой части окна отображаются папки и «Избранное», в правой — содержимое папки, выбранной в левой части окна.

Наборы фреймов и фреймовые документы

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

Создание набора фреймов

Ниже приводится пример создания frameset HTML:

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN”
“http://www.w3.org/TR/html4/frameset.dtd”>
<html>
  <head>
    …
  </head>
  <frameset attributes>
    <frame attributes></frame>
    <frame attributes></frame>
    …
  </frameset>
</html>

Особенности кода:

  • Отсутствует элемент «body». Его роль выполняет тег <frameset>;
  • Теги <frame>, расположенные внутри <frameset>, определяют содержимое фреймов и их свойства;
  • Кроме <frameset> и <head> в документе больше нет никакого содержимого.

Тег <frameset>

Тег <frameset> отвечает за расположение фрейма в документе. Указанные в нем значения определяют количество frameset rows и строк, а также ширину фреймов. Формат тега <frameset> выглядит следующим образом:

<frameset cols|rows = “размер(ы)_столбцов_или_строк”>

Размеры столбцов или строк могут быть заданы в пикселях, процентах или как "*". В последнем случае браузер разделит оставшуюся часть окна на столбцы, где значение “*” указывает их ширину.

Значения атрибута cols или rows также определяют количество отображаемых на странице фреймов. Для каждой записи (значения) требуется наличие тега <frame> внутри тега <frameset>.

Рассмотрим следующие примеры создания тега <frameset>:

<!– Два столбца, 25% окна, остальные 75% окна –>
<frameset cols = “25%, 75%”>
<!– Два столбца, 25% окна, остальные 75% окна –>
<frameset cols = “25%, *”>
<!– Три строки, первая 50% окна, две остальные по 25% окна –
>
<frameset rows = “50%, *, *”>
<!– Две строки, первая высотой 100 пикселей, вторая занимает оставшееся 
пространство окна –>
<frameset rows = “100px, 200px”>

Тег <frame>

Тег <frame> отвечает за свойства каждого фрейма в наборе фреймов, заключенного в тег frameset. Он имеет следующий синтаксис:

<frame name=”название_фрейма” src=”url_содержимого”></frame>

Атрибут name присваивает фрейму уникальное имя, на которое могут ссылаться URL-адреса, скрипты и т. д. Это необходимо для управления содержимым фрейма. Атрибут src используется для указания URL-адреса содержимого, которое должно отображаться во фрейме.

Тег <frame> поддерживает еще один атрибут — noresize. По умолчанию размер фрейма является изменяемым. Чтобы запретить изменение размера, необходимо задать атрибуту noresize значение noresize.

Например:

<frameset cols=“50%,50%”>
   <frame src=“frame_a.htm” noresize=“noresize”>
   <frame src=“frame_b.htm”>
</frameset>

Определение ссылок для фреймов

Чтобы изменить содержимое фрейма, следует указать нужный фрейм. Для этого используется атрибут name. Затем эти имена можно использовать в скриптах и тегах ссылок, чтобы определить для фрейма новое содержимое.

Изменить содержимое фрейма во frameset можно с помощью атрибута target тега ссылки. Для атрибута target допустимы следующие значения:

Определение ссылок для фреймов

Например:

<a href=”news.html” target=”content”>Последние новости</a>

Встроенные фреймы

В отличие от frameset HTML тег iframe используется для отображения содержимого фрейма рядом с остальным содержимым веб-страницы. Встроенные фреймы не полностью поддерживаются браузерами. Их можно размещать на веб-странице, используя тег <iframe>. Синтаксис тега <iframe> выглядит следующим образом:

<iframe src=”url_содержимого”></iframe>

Тег <iframe> поддерживает такие атрибуты:

Встроенные фреймы

Вадим Дворниковавтор-переводчик статьи «What are frames in HTML?»