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


HTML Фреймы

Фреймы — это HTML-элементы, позволяющие разделить окно веб-браузера на несколько независимых окон, в каждое из которых можно загрузить отдельный HTML-документ. Каждое такое окно (фрейм) может иметь собственные полосы прокрутки и функционировать независимо от других независимых окон либо наоборот управлять их содержанием. Они могут применяться для организации постоянно находящегося в одном окне меню, в то время как в другом окне располагается непосредственно сама информация. Пользователи могут обращаться к меню в любой момент, и им не нужно возвращаться к предыдущей странице, чтобы выбрать другой пункт меню. Применение фреймов позволит вам «закрепить» в окне браузера изображения или другие неподвижные по замыслу элементы интерфейса, в то время как остальная часть страницы будет прокручиваться во фрейме.Однако, стоит отметить, что в наши дни фреймы считаются устаревшим средством, а сайты с фреймами теперь считаются несолидными, так как профессиональные веб-мастера никогда не используют фреймы в своих проектах. С фреймами связан целый ряд печально известных проблем. Они, например, сбивают с толку поисковые машины, поскольку на страницах, которые содержат контент, нет ссылок на другие документы. Если вы хотите получать посетителей с поисковых систем, забудьте о фреймах. Понравившуюся страницу пользователю невозможно поместить в раздел закладки браузера, так как фреймы скрывают адрес страницы, на которой он находится, и всегда показывают только адрес веб-сайта. По этой причине они создают проблемы для браузеров при отслеживании хронологии и еще они не слишком приспособлены для разных размеров экранов и мобильных устройств.Несмотря на то, что проекты с фреймами встречаются во всемирной паутине все реже, изучение HTML было бы неполным без рассмотрения темы о фреймах. У фреймов наряду с недостатками есть и некоторые достоинства, которые не позволяют отбросить эту технологию как бесперспективную.

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

Структура HTML-документа с фреймами внешне очень напоминает формат обычного HTML-документа. Как и в обычном HTML-документе, весь код помещен между парными тегами <html> и </html>, а в контейнере <head> располагаются заголовки. Основное отличие документа с фреймами от обычного HTML-документа — у документа с фреймами вместо тега <body> применяется парный тег <frameset> (от англ. frame set – набор фреймов).В следующем примере приведена структура HTML-документа с фреймами:

Пример: Структура HTML-документа с фреймами

frame_top
frame_left frame_right
<!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Документ с фреймами</title> </head> <frameset rows="100, *"> <frame src="frame_top.html"> <frameset cols="20%, 80%"> <frame src="frame_left.html"> <frame src="frame_right.html"> </frameset> <noframes> <p>Ваш браузер не отображает фреймы</p> </noframes> </frameset> </html>

В приведенном примере страница содержит три области, в каждую из которых первоначально загружаются HTML-документы frame_top.html, frame_left.html и frame_right.html. Помимо HTML-документов, фрейм может содержать и графику. Для этого необходимо указать адрес соответствующего изображения в атрибуте src, например src="image.gif". Обратите внимание, что элемент <frame> используется без закрывающего тега.Внутри контейнера <frameset> могут содержаться только теги <frame> или другой набор фреймов, охваченный тегами <frameset> и <frameset>.Тег <frameset> имеет следующие атрибуты:

  • rows — описывает разбиение страницы на строки: <frameset rows="100, *">
  • cols — описывает разбиение страницы на столбцы: <frameset cols="20%, 80%">
Области, полученные в результате такого разбиения страницы, и будут являться фреймами. Отсутствие этих атрибутов определяет один фрейм, который займет все окно браузера.

В значении атрибутов rows и cols необходимо указывать не количество строк или столбцов, а значение ширины и высоты фреймов. Все значения в списке разделяются запятыми. Размеры могут быть указаны в абсолютных единицах (в пикселах) или в процентах:

  • cols="20%, 80%" — окно браузера разбивается на две колонки с помощью атрибута cols, левая колонка занимает 20%, а правая 80% окна браузера.
  • rows="100, *" окно браузера разбивается на два горизонтальных окна с помощью атрибута rows, верхнее окно занимает 100 пикселов, а нижнее — оставшееся пространство, заданное символом звездочки.

Как видно из данного примера, контейнер <frameset> с атрибутом rows вначале создает два горизонтальных фрейма, а вместо второго фрейма подставляется еще один <frameset>, который разбивает нижний горизонтальный фрейм на две колонки с помощью атрибута cols, левая колонка занимает занимает 20%, а правая 80% окна браузера.Если браузер не поддерживает фреймы, то в окне будет отображен текст, расположенный между тегами <noframes> и </noframes>. Все, что находится между тегами <noframes> и </noframes>, игнорируется браузерами, поддерживающими фреймы. Таким образом разработчику нужно написать код, дублирующий содержимое фреймов другими средствами, и поместить этот код в контейнер <noframes>, тогда все пользователи смогут увидеть его веб-страницу.Как уже отмечалось, для вставки в документ отдельного фрейма служит непарный тег <frame>. Атрибут src задает документ, который должен отображаться внутри данного фрейма, например: <frame src="frame_top.html">. Если атрибут src отсутствует, отображается пустой фрейм.

Границы или пространство между фреймами

По умолчанию, браузер отображает серую и, как правило, в виде трехмерной линии границу между фреймами, с помощью которой посетители могут регулировать размер фрейма.Границей фрейма можно управлять, как и любыми другими элементами фрейма. Для этого существует несколько атрибутов элемента <frameset>, позволяющих настраивать границы фреймов. Толщина линии границы определяется атрибутом border. По умолчанию значение толщины границы равно пяти.Чтобы скрыть границу фрейма, необходимо либо указать значение ширины границы равным нулю, либо присвоить значение «no» или «0» атрибуту frameborder. Атрибут frameborder может принимать только два противоположных значения. Если значение атрибута frameborder равно «yes» или «1», то граница фреймов будет отображаться, а если «0» или «no», то нет. Учтите, что значения атрибута frameborder различаются для разных браузеров. Чтобы решить эту проблему используйте дважды атрибут frameborder, а для некоторых браузеров требуется еще добавить атрибут framespacing со значением «0»:

<frameset frameborder="0" framespacing="0" frameborder="no" border="0">

В следующем примере убираем границу между фреймами:

Пример: Убираем границу между фреймами

<!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Фреймы без границ</title> </head> <frameset cols="100,*" frameborder="0" framespacing="0" frameborder="no" border="0"> <frame src="frame_left.html" name=" frame_left" > <frame src="frame_right.html" name="frame_right" > </frameset> </html>

Если вы удалите границу между фреймами, посетители не смогут изменять размер фрейма в браузере. Вы можете также не допустить изменения размера фрейма, сохранив границы, используя атрибут noresize:

<frame src="frame_left.html" noresize>

С помощью атрибута bordercolor можно изменить цвет границы фрейма, необходимо только указать код или соответствующее зарезервированное имя цвета.Ниже приведен пример html-страницы, которая содержит описанные выше атрибуты управления границей фрейма: цвет границы — красный, изменять размер верхнего фрейма нельзя:

Пример: Управление границей фреймов

frame_top
frame_left frame_right
<!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Управление границей фреймов</title> </head> <frameset rows="150, *" border="10" bordercolor="red" frameborder="1" frameborder="yes"> <frame src="frame_top.html" noresize> <frameset cols="20%, 80%"> <frame src="frame_left.html"> <frame src="frame_right.html"> </frameset> </frameset> </html>

Если вы хотите расположить страницу, отображаемую внутри фрейма, ближе к его границам, или, наоборот, отодвинуть дальше, измените атрибуты marginheight и marginwidth тэга <frame>. Атрибут marginheight определяет отступ между содержимым фрейма и его верхней и нижней границами. Синтаксис:

<frame marginheight="число">

Атрибут marginwidth определяет отступ между содержимым фрейма и его правой и левой границами. Синтаксис:

<frame marginwidth="число">

Данная строка html, например, располагает отображаемую страницу вплотную к границе фрейма:

Если страница отображает нежелательную для вас полосу прокрутки, вы можете решить эту проблему, указав атрибут scrolling="no" в тэге <frame>. Но учтите, что если фрейм будет недостаточно большим, чтобы отобразить все содержимое страницы, то у посетителя не будет никакой возможности прокрутить отображаемую страницу.

Ссылки внутри фреймов

Переход по ссылке в обычном HTML-документе осуществляется следующим образом: нажимаете ссылку и текущий документ заменяется новым в текущем либо в новом окне браузера. При использовании фреймов схема загрузки html-документов отличается от обычной и главное отличие — это возможность загружать html-документ в один фрейм из другого фрейма.Для загрузки документа в определенный фрейм используется атрибут target тега <a>. В качестве значения атрибута target используется имя фрейма, в который будет загружаться документ, указанный атрибутом name тега <frame>. Стоит также отметить, что имя фрейма должно начинаться либо с цифры либо с латинской буквы. Следующие имена используются в качестве зарезервированных:

ИмяОписание
_selfдокумент загрузится в текущий фрейм, т.е. в котором находится сама гиперссылка
_blankдокумент загрузится в новом окне веб-браузера
_parentдокумент загрузится в окне, являющееся родительским по отношению к текущему фрейму
_topдокумент загрузится поверх всех фреймов
targetframeдокумент загрузится в фрейм с указанным именем

Для внешних ссылок следует задавать в качестве значения для атрибута target либо _top, либо _blank, для того, чтобы сторонние проекты отображались не в ваших фреймах, а занимали полное окно браузера.

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

<a href="http://www.google.com" target="frame_right">Google</a>

Правому фрейму присваивается имя frame_right:

<frame src="frame_right.html" name="frame_right">

Чтобы документ загружался в указанный фрейм, используется конструкция target="frame_right", как показано в примере:

Пример: Ссылка на другой фрейм

frame_topic

Google

frame_left frame_right
<!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Ссылка на другой фрейм</title> </head> <frameset rows="100, *"> <frame src="frame_topic.html"> <frameset cols="20%, 80%"> <frame src="frame_left.html"> <frame src="frame_right.html" name="frame_right"> </frameset> <noframes> <p>Ваш браузер не отображает фреймы</p> </noframes> </frameset> </html>

Плавающие фреймы

Элемент <iframe> (сокращение английского термина «плавающий фрейм») позволяет встроить в любое место веб-страницы отдельный HTML-документ или другой ресурс. Содержимым плавающего (встроенного) фрейма может быть любая НТМL-страница, как с вашего ресурса, так и с другого веб-сайта. Как вы уже поняли, плавающие фреймы создаются с помощью элемента <iframe>, который в отличие от тега <frame> вставляется не между тегами <frameset> и </frameset>, а между тегами <body> и </body>.В элементе <iframe> можно использовать те же атрибуты, что и для фрейма </frame>, за исключением атрибута noresize — в отличие от обычных фреймов, для встроенных фреймов возможность изменения размеров на экране не предусмотрена:

АтрибутОписание
srcиспользуется для указания URL-aдpeca страницы, отображаемой во фрейме
heightустанавливает высоту окна плавающего фрейма в пикселах или %
widthустанавливает ширину окна плавающего фрейма в пикселах или %
nameимя фрейма, по которому к нему можно будет обращаться в ссылках
frameborderзадает обрамление у фреймов, может принимать значения 1 (есть обрамление) или 0 (нет об-рамления) (В HTML5 не поддерживается)
marginwidthотступ слева и справа от содержания до границы фрейма (В HTML5 не поддерживается)
marginheightотступ сверху и снизу от содержания до границы фрейма (В HTML5 не поддерживается)
scrollingопределяет вид полос прокрутки у фрейма и принимает значения yes (есть полосы), no (нет полос) и auto (полосы появляются при необходимости) (В HTML5 не поддерживается)
allowfullscreenразрешает для фрейма полноэкранный режим
hspaceГоризонтальный отступ от фрейма до окружающего контента
vspaceвертикальный отступ от фрейма до окружающего контента
alignопределяет выравнивание фрейма

В следующем примере размеры плавающего фрейма заданы в пикселях, однако вы можете задавать их и в %:

<iframe src="demo_iframe.htm"></iframe>

Пример: Плавающий фрейм

<!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Плавающий фрейм</title> </head> <body> <iframe src="demo_iframe.html" align="left"> Ваш браузер не поддерживает плавающие фреймы! </iframe> </body> </html>

По умолчанию плавающий (строчный) фрейм имеет границы черного цвета. Чтобы удалить границу, вместо атрибута frameborder воспользуйтесь свойством border таблицы стилей CSS:

Пример HTML:

Попробуй сам <iframe src="demo_iframe.html"> </iframe> Используя свойства каскадных таблиц стилей CSS Вы можете также изменить размер, стиль и цвет границы встроенного фрейма:

Пример HTML:

Попробуй сам <iframe src="demo_iframe.html"> </iframe>

В следующем примере при переходе по ссылкам соответствующая страница загружается в окно встроенного фрейма. Для этого требуется задать имя фрейма через атрибут name, а в теге <a> указать это же имя в атрибуте target:

Пример HTML:

Попробуй сам <iframe src="demo_iframe.html" name="chapter" align="right"> <p>Ваш Web-браузер не отображает фреймы</p> </iframe> <h3>Оглавление</h3> <ul> <li><a href="orange.jpg" target="chapter">Апельсин</a></li> <li><a href="rabbit.gif" target="chapter">Веселый кролик</a></li> <li><a href="frame_topic.html" target="chapter">О GOOLE</a></li> </ul>

Задачи

  • Загрузка картинки в окно фрейма

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

    Задача HTML:

    Реши сам » <!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Загрузка изображения во фрейм</title> </head> <body> <iframe src="demo_iframe.html" name="iframe1"> </iframe> <a href="#">Смайлик</a> </body> </html>
  • Встроенный фрейм

    Добавьте встроенный фрейм, URL-адресс которого "http://www.wm-school.ru" в HTML-документ. Размеры фрейма установите 250х250px.

    Задача HTML:

    Реши сам » <!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Встроенный фрейм</title> </head> <body> </body> </html>
  • Граница встроенного фрейма

    Воспользуйтесь свойством CSS для удаления границы плавающего фрейма.

    Задача HTML:

    Реши сам » <!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Граница встроенного фрейма</title> </head> <body> <iframe src="demo_iframe.html"></iframe> </body> </html>
  • Цвет границы плавающего фрейма

    Воспользуйтесь свойством CSS для изменения цвета границы плавающего фрейма на зеленый (green).

    Задача HTML:

    Реши сам » <!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>Цвет границы фрейма</title> </head> <body> <iframe src="demo_iframe.html"></iframe> </body> </html>
Please enable JavaScript to view the comments powered by Disqus.

wm-school.ru

что это, как он скажется на ранжировании ресурса

Тематический трафик – альтернативный подход в продвижении бизнеса

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Подпишись на рассылку и получи книгу в подарок!

Фрейм - это отдельная HTML-страница, которая так же может быть отображена в окне браузера.

Этот инструмент разбивает страницу на отдельные объекты. Визуально они упрощают восприятие. Однако использовать их не рекомендуется.

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

Разновидности фреймов

Фреймы для сайта подразделяются в зависимости от типа отображаемой информации на:

  • Структурные, которые используется для обозначения объектов и понятий.
  • Ролевые, необходимые для обозначения соответствующих обязанностей.
  • Фреймы – сценарии, которые нужны для отображения поведения.
  • Ситуативные. Они необходимы для обозначения режима деятельности, а также состояния.
  • Фреймы – образцы или прототипы, хранящиеся в базе данных.
  • Экземплярные, создаваемые для отображения реальных ситуаций на основе поступившей информации.

Если использовать несколько разновидностей, то можно сформировать семантическую сеть. Свойства различных фреймов наследуются сверху вниз посредством АКО–связи.

Как работают фреймы

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

Отличие в том, что отображение страницы во фрейме происходит на HTML – странице в контейнере FRAMESET. Пусть это и неполная, но отдельная страница.

Зачем нужны фреймы

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

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

Плюсы и минусы использования фреймов

Безусловным преимуществом является то, что при использовании фреймов на пользовательский ПК загружается меньше информации. Это обусловлено тем, что оглавление отображается всего один раз и не исчезает в дальнейшем. Загрузка основного контента происходит в обычном режиме. Имеют место недостатки:

  • Фреймовая структура является довольно сложной и способна запутать даже опытного специалиста.
  • При переходе на независимую страницу теряется навигация, так как оглавление располагается в отдельном файле.
  • Не все браузеры правильно отображают фреймовую структуру, поэтому возникает необходимость делать двойную работу, добавляя дополнительные теги, которые будут отображаться, если произойдёт сбой.

Как фреймы влияют на ранжирование

Фреймы не учитываются поисковыми роботами. Вообще.

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

semantica.in

Фреймы Что такое фрейм Фреймы разделяют окно

Фреймы

Что такое фрейм? Фреймы разделяют окно браузера на отдельные области, расположенные рядом друг с другом. В каждую из таких областей загружается самостоятельная веб-страница.

Пример

Достоинства фреймов • • • Простота; быстрота; размещение; изменение размеров областей; загрузка.

Недостатки фреймов • Навигация • Плохая индексация поисковыми системами • Внутренние страницы нельзя добавить в «Закладки» • Несовместимость с разными браузерами • Непрестижность

Пример кода с 2 фреймами

Тип документа!

Пример с 3 фреймами

" src="http://present5.com/presentation/13371709_437017014/image-10.jpg" alt="Пример

" /> Пример

МЕНЮ

Текст

Атрибут target • _blank — загружает документ в новое окно; • _self — загружает документ в текущий фрейм; • _top — отменяет все фреймы и загружает документ в полное окно браузера.

Границы между фреймами Чтобы скрыть границу между фреймами используется атрибут frameborder тега

со значением 0. В браузере Opera требуется добавить framespacing="0". Можно, также, задать цвет рамки с помощью атрибута bordercolor, который может применяться в тегах и . Толщина линии управляется атрибутом border.

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

Полосы прокрутки Если содержимое фрейма не помещается в отведенное окно, автоматически появляются полосы прокрутки для просмотра информации. Для управления отображением полос прокрутки используется атрибут scrolling тега . Он может принимать два основных значения: yes — всегда вызывает появление полос прокрутки, независимо от объема информации; no — запрещает их появление.

«Плавающие» фреймы Это фрейм, который можно добавлять в любое место веб-страницы. Во фрейм можно загружать HTML-документ и прокручивать его содержимое независимо от остального материала на веб-странице. Создание плавающего фрейма происходит с помощью тега

" src="http://present5.com/presentation/13371709_437017014/image-16.jpg" alt=" «Плавающие» фреймы. Пример. " /> «Плавающие» фреймы. Пример.

present5.com

Фреймы | htmlbook.ru

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

Достоинства фреймов

Простота

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

Быстрота

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

Размещение

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

Изменение размеров областей

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

Загрузка

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

Недостатки фреймов

Навигация

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

Плохая индексация поисковыми системами

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

Внутренние страницы нельзя добавить в «Закладки»

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

Несовместимость с разными браузерами

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

Непрестижность

Весьма странный недостаток, который не имеет никакого отношения к техническим особенностям создания сайта, а носит скорее идеологический характер. Сайты с фреймами считаются несолидными, а их авторы сразу выпадают из разряда профессионалов, которые никогда не используют фреймы в своих работах. Исключение составляют чаты, где без фреймов обойтись хотя можно, но достаточно хитрыми методами, а с помощью фреймов создавать чаты достаточно просто.

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

htmlbook.ru

Что такое фреймы в 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?” был подготовлен дружной командой проекта Сайтостроение от А до Я.

www.internet-technologies.ru

Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16

Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16

Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16

Всем привет!Продолжаем усердное изучение основ HTML. Я рад, что вы не бросаете уроки основ HTML.

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

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

Для примера, чтобы понять, как работает фрейм на практике, предлагаю посмотреть пример. Сделайте там пару переходов:

[пример]

Ну, как вам? Хотите научиться такое создавать? Сейчас мы научимся вставлять фреймы в html-документ.

Создание фрейма на веб странице осуществляется по такому макету:

<frameset> <frame> <frame> </frameset>

Внимание: макет фрейм-кода вставляется в html-документ вместо тега <bode></body>:

<html> <head> <title>Фреймы</title> </head> <frameset> <frame> <frame> </frameset> </html>

○ тег frameset

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

<frameset></frameset>

*Атрибуты тега frameset:

  • Cols - вертикальные
  • Rows - горизонтальные

rows - горизонтально

rows - горизонтально

cols - вертикально

cols - вертикально

В атрибутах cols и rows указывается, на сколько частей делить окно браузера. Вот, например, чтобы разделить окно браузера на две вертикальные части, нужно прописать вот так:

<frameset cols="30%,*">

Левая часть экрана будет размером 30%, а правая – 70%.

Если хотите разделить браузер еще на несколько частей, допишите через запятую дополнительные размеры, вот, например, так:

<frameset cols="30%,20%,10%,40%">

В итоге первая вертикальная колонка будет  шириной 30%, вторая - 20%, третья - 10%, четвертая - 40%.

Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16

Разобрались?

Так же и с горизонтальной разбивкой:

<frameset rows="30%,20%,10%,40%">

Первая горизонтальная колонка будет  шириной 30%, вторая - 20%, третья - 10%, четвертая - 40%.

Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16

○ тег frame

Тег frame указывает, какой html-документ должен быть загружен в окно браузера.Вот, например, нам нужно загрузить в одном окне браузера три разных страницы «1.html», «2.html», «3.html». Тег frame будет выглядеть вот так:

<frame src="1.html"> <frame src="2.html"> <frame src="3.html">

Подытожим знания по фреймам. Итак, задача: нужно разделить окно браузера на две части и загрузить в эти части две веб страницы – «1.html» на 30%, «2.html» на 70%.Вот готовый код:

<frameset cols="30%,*"> <frame src="1.html"> <frame src="2.html"> </frameset>

Результат будет таким:

Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16

* Атрибуты тега  frame

  • src – адрес веб страницы. src="1.html";
  • marginwidth – отступ внутри фрейма по ширине. Пример: marginwidth="10";
  • marginhight – отступ внутри фрейма по высоте. Пример: marginhight ="10";
  • scrolling – прокрутка фрейма через скролл.- yes – скролл будет присутствовать во фрейме. Пример: scrolling ="yes";- no – скролл не будет присутствовать во фрейме. Пример: scrolling ="no";- auto – скролл будет присутствовать во фрейме при необходимости. Пример: scrolling ="auto";
  • noresize – запрещает двигать границы фрейма.
  • name – имя фрейма. Указывает, в каком окне нужно открывать другие фреймы. Пример: name ="stepkinblog-ru";

○ Ссылки во фреймах или учимся пользоваться атрибутом «name»

Если фрейму не прописать имя в атрибуте «name», то при нажатии по ссылке откроется новый фрейм в том окне, где была ссылка:

[яркий пример, где нет атрибута «name»]

А вот пример, если прописать атрибут «name»:

[яркий пример с атрибутом «name»]

Правда, так лучше? :cool:Для любого фрейма пропишите атрибут «name» там, где вы хотите, чтобы открывались в нем другие html-документы

<frame src="2.html "name ="stepkinblog-ru">

Имя в атрибуте «name» может быть любое. Но в дальнейшем, если вы будете давать имена и остальным тегам «frame», то помните, что каждое должно быть уникальным:

<frame src="2.html "name ="stepkinblog-ru"> <frame src="1.html "name ="bloggood-ru"> <frame src="3.html "name ="nocrisise-ru">

Теперь нужно к ссылке прописать «цель», то есть, в каком окне фрейма должен осуществиться переход. Для этого в теге «a» пропишите атрибут «target»:

<a href="1text.html" target="stepkinblog-ru">страница 1</a> <a href="2text.html" target="stepkinblog-ru">страница 2</a> <a href="3text.html" target="bloggood-ru">страница 3</a>

«Страница 1», «Страница 2»  будут открываться в одном окне там, где вы указали имя фрейму «name ="stepkinblog-ru"» и «Страница 3» откроется в другом фрейме, где было название «name ="bloggood-ru"»

Со ссылками разобрались. Переходим к практике. :idea:

ПРАКТИКА

Задание: Нужно создать фреймы вот по такому макету:

Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16

Вначале создадим три горизонтальных фрейма:

<frameset rows="15%,*,15%"> </frameset>

Теперь добавим «top.html» и «footer.html»

<frameset rows="15%,*,15%"> <frame src="top.html"> <frame src="footer.html"> </frameset>

Результат пока что будет вот таким:

Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16

Теперь между «top.html» и «footer.html» добавим «menu.html» и «content.html»:

<frameset rows="15%,*,15%"> <frame src="top.html"> <frameset cols="25%,75%"> <frame src="menu.html"> <frame src="content.html" name="main"> </frameset> <frame src="footer.html"> </frameset>

Готовый код:

<html> <head> <title>Фреймы</title> </head> <frameset rows="15%,*,15%"> <frame src="top.html"> <frameset cols="25%,75%"> <frame src="menu.html"> <frame src="content.html" name="main"> </frameset> <frame src="footer.html"> </frameset> </html>

Сохраните файл, как «index.html»

Создайте странички «top.html », «footer.html», «menu.html» и «content.html»:

Код файла «top.html»

<html> <head> <title>шапка сайта</title> </head> <body bgcolor="#b2f2ff" text="#0000FF"> <h2>StepkinBLOG.ru</h2> </body> </html>

Код файла «footer.html»

<html> <head> <title>Файл footer.html </title> </head> <body bgcolor="#b2f2ff" text="#000000"> StepkinBlog.com © 2015 </body> </html>

Код файла «menu.html»

<html> <head> <title>Файл menu.html – меню сайта</title> </head> <body bgcolor="#b2bbff" text="#112cf5"> <ul> <li><a target="main" href="content.html">Главная страница</a></li> <li><a target="main" href=" autor.html">Об авторе</a></li> </ul> </body> </html>

Код файла «content.html»:

<html> <head> <title>Главная страница</title> </head> <body bgcolor="#e3e5f8" text="#FF0055"> <h2>Главная страница</h2> Содержимое сайта - "Главная страница (content.html)" </body> </html>

Код файла «autor.html»:

<html> <head> <title> Об авторе</title> </head> <body bgcolor="#e3e5f8" text="#FF0055"> <h2> Об авторе</h2> Содержимое сайта - " Об авторе (autor.html)" </body> </html>

Вот такой результат у меня вышел:

[посмотреть пример]

Воспользуемся атрибутами «frame» и запретим вручную растягивание фреймов и уберем скролл в файле «index.html».

<frameset rows="15%,*,15%"> <frame src="top.html" scrolling ="no" noresize> <frameset cols="25%,75%"> <frame src="menu.html"scrolling ="no" noresize> <frame src="content.html" name="main"scrolling ="no" noresize> </frameset> <frame src="footer.html" noresize> </frameset>

[посмотреть пример]

○ что делать если фреймы не поддерживаются браузером?Можно вывести сообщение пользователю, что его браузер не поддерживает фреймы. Для этого вставьте тег <noframes> вовнутрь конструкции <frameset>:

<frameset rows="15%,*,15%"> <noframes>УПС! Ваш браузер не поддерживает фреймы.</noframes> <frame src="top.html" scrolling ="no" noresize> <frameset cols="25%,75%"> <frame src="menu.html"scrolling ="no" noresize> <frame src="content.html" name="main"scrolling ="no" noresize> </frameset> <frame src="footer.html" noresize> </frameset>

○ Плавающий фрейм

Если вам нужно вставить фреймовое окно прямо в страницу, в которой нет фреймовой структуры, для этого существует тег «iframe»

<iframe src="http://stepkinblog.ru/"></iframe>

* атрибуты тега «iframe»

  • src - путь к открываемой странице
  • width - ширина плавающего фрейма
  • height - высота плавающего фрейма
  • scrolling - полоса прокрутки- no - никогда не показывать полосу прокрутки- yes - всегда показывать- auto - показывать при необходимости
  • align - выравнивание плавающего фрейма- left – слева- right – справа- top – выше- bottom – ниже
  • frameborder - рамка вокруг плавающего фрейма- 1 - включить рамку- 0- выключить рамку

Вот так будет выглядеть тег «iframe» с атрибутами:

<iframe src=" http://stepkinblog.ru/" align ="left" scrolling="no" frameborder="1"></iframe>

Если браузер не поддерживает фреймы, можно вставить текст «УПС! Ваш браузер не поддерживает фреймы.» между тегами <iframe></iframe>.Это будет выглядеть вот так:

<iframe src=" http://stepkinblog.ru/" align ="left" scrolling="no" frameborder="1">УПС! Ваш браузер не поддерживает фреймы.</iframe>

Для примера давайте добавим к файлу «content.html» плавающий фрейм:

<html> <head> <title>Главная страница</title> </head> <body bgcolor="#e3e5f8" text="#FF0055"> <h2>Главная страница</h2> Содержимое сайта - "Главная страница (content.html)" <iframe src=" http://stepkinblog.ru/" align ="left" scrolling="auto" frameborder="1">УПС! Ваш браузер не поддерживает фреймы.</iframe> </body> </html>

[посмотреть пример]

Предыдущая запись Как сделать карту изображения в HTML(навигационная карта). Основы HTML для начинающих. Урок №15 Следующая запись Тег div в HTML. Основы HTML для начинающих. Урок №17

stepkinblog.ru

Фреймы | HTML/xHTML

На многих современных сайтах присутствуют «прилипающие» меню навигации, которые отображаются либо в боковой панели, либо в верхней части, когда вы прокручиваете страницу вверх и вниз. Но свойства CSS, которые позволяют создавать «прилипающие» меню, не всегда поддерживается браузерами. Ранее для реализации подобного функционала использовались фреймы в HTML.

Разница между Frames и Iframes

При использовании frameset вы разделяете видимую часть окна браузера на несколько фреймов. Каждый фрейм имеет собственное содержимое, которое не затрагивает содержимое следующего. Frames и Iframes выполняют аналогичную функцию — встраивают ресурс в веб-страницу, но они принципиально отличаются друг от друга:

  • Frames — это элементы, определяющие макет;
  • Iframes — элементы, добавляющие контент.

История и будущее фреймов

W3C признала фреймы устаревшими в HTML5. Данное решение было аргументировано тем, что фреймы HTML отрицательно сказываются на юзабилити и доступности. Давайте разберемся, обоснованы ли эти претензии.

Проблемы с фреймами

  • Проблемы юзабилити: с увеличением популярности мобильных устройств с небольшими экранами возникла необходимость того, чтобы сайты предлагали пользователям несколько представлений, которые изменяются в зависимости от размера окна просмотра. Хотя фреймами можно манипулировать, чтобы обеспечить определенную степень адаптивности, но они не слишком хорошо подходят для создания адаптивных сайтов;
  • Доступность: экранные дикторы и другие вспомогательные технологии довольно плохо считывают и взаимодействуют с сайтами, которые используют фреймы.

В данный момент в веб-разработке прослеживается глобальная тенденция разделения содержимого веб-страницы от ее представления:

  • Содержимое должно добавляться и определяться разметкой, например, через HTML;
  • Представление определяется языками, такими как CSS и JavaScript.

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

Будущее фреймов

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

Как сделать фреймы в HTML

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

Основная концепция фреймов

Основная концепция фреймов довольно проста:

  • Используйте элемент frameset в определенном месте элемента body в HTML-документе;
  • Используйте элемент frame, чтобы создать фреймы для содержимого веб-страницы;
  • Используйте атрибут src для идентификации ресурса, который должен загружаться внутри фрейма;
  • Создайте для каждого фрейма HTML отдельный файл с содержимым.

Рассмотрим несколько примеров того, как это работает. Сначала нужно создать несколько HTML-документов, с которыми мы будем работать. Давайте создадим четыре различных HTML-документа. Вот, что будет содержать первый из них:

<!DOCTYPE html> <html> <body> <h2>Frame 1</h2> <p>Contents of Frame 1</p> </body> </html>

Первый документ мы сохраним, как frame_1.html. Остальные три документа будет иметь подобное содержимое, и называться соответственно.

Создание вертикальных столбцов

Чтобы создать набор из четырех вертикальных столбцов, нужно использовать элемент frameset с атрибутом cols. Атрибут cols используется для определения количества и размера столбцов, которые будет содержать frameset. В нашем случае у нас есть четыре файла для отображения. Следовательно, нам нужно четыре фрейма.

Чтобы их создать, нам нужно задать в атрибуте cols четыре значения, разделенные запятой. Для простоты мы присвоим каждому из фреймов значение *, это задаст для них размер, при котором они автоматически будут заполнять все свободное пространство. Вот, как будет выглядеть наша HTML-разметка:

<!DOCTYPE html> <html> <frameset cols="*,*,*,*"> <frame src="../file_path/frame_1.html"> <frame src="frame_2.html"> <frame src="frame_3.html"> <frame src="frame_4.html"> </frameset> </html>

А вот как эта разметка будет отображаться:

Создание горизонтальных строк

Строки фреймов HTML можно создать с помощью атрибута rows, а не атрибута cols, как в предыдущем примере:

<!DOCTYPE html> <html> <frameset rows="*,*,*,*"> <frame src="frame_1.html"> <frame src="frame_2.html"> <frame src="frame_3.html"> <frame src="frame_4.html"> </frameset> </html>

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

Объединение столбцов и строк

Столбцы и строки фреймов могут одновременно отображаться на той же странице. Можно вкладывать один фрейм внутрь другого. Для этого мы сначала создаем frameset, а затем вкладываем дочерний frameset внутрь родительского элемента. Вот пример того, как можно вложить две строки в набор из трех столбцов:

frameset cols="*,*,*"> <frameset rows="*,*"> <frame src="frame_1.html"> <frame src="frame_2.html"> </frameset> <frame src="frame_3.html"> <frame src="frame_4.html"> </frameset>

Фрейм в HTML пример:

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

<frameset cols="*,*,*"> <frame src="frame_1.html"> <frameset rows="*,*"> <frame src="frame_2.html"> <frame src="frame_3.html"> </frameset> <frame src="frame_4.html"> </frameset>

Вот, как теперь будут отображаться фреймы:

Можно создать другие вложенные фреймы:

<frameset cols="*,*"> <frame src="frame_1.html"> <frameset rows="*,*"> <frame src="frame_2.html"> <frameset cols="*,*"> <frame src="frame_3.html"> <frame src="frame_4.html"> </frameset> </frameset> </frameset>

Этот код создает набор из двух одинаковых по размеру столбцов. Затем мы разделили второй столбец на две строки. И, наконец, мы разделили вторую строку на две колонки. Вот, как это будет выглядеть:

Другой способ создать комбинацию строк и столбцов — определить сетку столбцов и строк в одном фрейме. Например, если вы хотите создать сетку из четырех фреймов одинакового размера, можно использовать следующий код:

<frameset rows="*,*" cols="*,*"> <frame src="frame_1.html"> <frame src="frame_2.html"> <frame src="frame_3.html"> <frame src="frame_4.html"> </frameset>

Полученная сетка строк и столбцов будет выглядеть следующим образом:

Как задавать стили для фреймов

Когда речь идет об определении стилей веб-страницы, которая использует фреймы в HTML, существуют два способа назначения стилей:

  • Определение стилей внутри каждого frame;
  • Определение стилей для frameset.

Представление каждого frame должно определяться внутри исходного документа. Представление frameset должно определяться внутри родительского документа, содержащего frameset. Другими словами, стили для frame_1.html должны задаваться правилами CSS, содержащимися в файле frame_1.html, или в таблице стилей, связанной с файлом frame_1.html.

Определение стилей фреймов в исходном документе

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

Применив стили CSS к веб-странице, которая содержит frameset, мы не сможем применить стили к каждому фрейму отдельно. Если мы хотим задать стили для frame_1.html, нам нужно добавить эти стили непосредственно в сам документ. Вот пример того, как это можно сделать:

<!DOCTYPE html> <html> <head> <style> body {background: gray;} h2 {color: blue;} p {margin: 20px;} </style> </head> <body> <h2>Frame 1</h2> <p>Contents of Frame 1</p> </body> </html>

Если мы вернемся к нашему предыдущему примеру создания фреймов в HTML с четырьмя столбцами одинакового размера и загрузим frameset после внесения этих изменений в файл frame_1.html, мы получим следующее:

Определение стилей и форматирование frameset

Как повлиять на представление frameset помимо определения стилей самих документов:

  • Может быть определен или зафиксирован размер каждого фрейма;
  • Может быть изменен отступ между фреймами;
  • Может быть задан формат рамки вокруг каждого фрейма.

Эти изменения вносятся не через CSS. Они осуществляются путем добавления атрибутов и их значений для элемента frame.

Определение размеров фреймов

Размеры фреймов могут задаваться в пикселях, процентах, либо фреймы могут автоматически занимать все свободное пространство. Чтобы указать размер фрейма, вставьте нужное значение в атрибут cols или rows. По умолчанию, если для фрейма не указан атрибут noresize, посетители сайта могут с помощью мыши перетащить границу между двумя фреймами, изменяя их размер. Если это нежелательно, то к элементу фрейма может быть применен атрибут noresize, и изменение его размеров будет невозможно. Объединим обе эти концепции на практике.

Мы создадим следующий макет:

  • Один ряд на всю ширину вдоль верхней части страницы;
  • Три столбца ниже верхнего ряда;
  • Размеры первого и третьего столбца задаются так, чтобы создать левый и правый сайдбары;
  • Размеры среднего столбца задаются так, чтобы он представлял собой большую область контента.

Мы можем создать фрейм HTML с помощью следующего кода:

<frameset rows="150px,*"> <frame noresize src="frame_1.html"> <frameset cols="20%,*,20%"> <frame src="frame_2.html"> <frame src="frame_3.html"> <frame src="frame_4.html"> </frameset> </frameset>

Этот код создает frameset из двух рядов:

  • Первый ряд высотой 150 пикселей. Атрибут noresize, указанный для первого frame означает, что его размеры не могут быть изменены;
  • Стили, которые мы применяли ранее к frame_1.html сохраняются, но они влияют только на содержимое этого фрейма;
  • Второй ряд расширяется, чтобы заполнить оставшееся пространство;
  • Второй frameset вложен во второй ряд и содержит три столбца;
  • Первый и третий столбцы заполняют по 20% доступного пространства окна браузера;
  • Второй столбец расширяется таким образом, чтобы заполнить пространство, остающееся между первым и третьим столбцом;
  • Так как мы не указали для столбцов атрибут noresize, изначально они будут отображаться, исходя из размеров, заданных в коде.

Но посетитель сайта сможет вручную изменить их размеры.

Этот код создает веб-страницу, отображаемую следующим образом:

Форматирование рамки и отступов вокруг фрейма

Теперь, когда мы определили макет, если нам нужно, мы можем увеличить или уменьшить отступы между фреймами, а также удалить рамку между ними. Используя макет, который мы создали в предыдущем пункте, давайте удалим рамки между тремя столбцами, но оставим рамку между верхними и нижними рядами. Давайте также добавим отступ вокруг содержимого первого фрейма HTML:

<frameset rows="150px,*"> <frame noresize src="frame_1.html" marginheight="15"> <frameset cols="20%,*,20%"> <frame src="frame_2.html" frameborder="0"> <frame src="frame_3.html" frameborder="0"> <frame src="frame_4.html" frameborder="0"> </frameset> </frameset>

Атрибут marginheight, примененный к первому фрейму, добавляет отступ в 15 пикселей выше и ниже содержимого, загружаемого в первом фрейме. Значение frameborder, равное 0, удаляет рамки для всех трех нижних фреймов. Вот как это будет выглядеть:

Указание фреймов с помощью ссылок

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

Можно отформатировать анкоры для указания конкретных фреймов через присвоение нужному элементу frame атрибута name и использование атрибута target внутри элемента a для загрузки href в указанном фрейме. Если все это немного сбивает вас с толку, давайте разберем процесс создания фреймов в HTML шаг за шагом.

Первым делом нам нужно присвоить name для фрейма, в котором должны открываться ссылки. В разметке, которую мы создали чуть ранее, можно использовать левый столбец для меню навигации, а центральный столбец в качестве целевого фрейма. Для этого нужно присвоить атрибут name целевому элементу:

<frameset rows="150px,*"> <frame noresize src="frame_1.html" marginheight="15"> <frameset cols="20%,*,20%"> <frame src="frame_2.html" frameborder="0"> <frame src="frame_3.html" name="mid_col" frameborder="0"> <frame src="frame_4.html" frameborder="0"> </frameset> </frameset>

Теперь, когда мы задали для центрального столбца name=»mid_col», можно создать в исходном документе нашего левого столбца frame_2.html несколько ссылок:

<!DOCTYPE html> <html> <body> <h2>Frame 2</h2> <p>Contents of Frame 2</p> <ul> <li><a href="frame_1.html" target="mid_col">Load frame_1.html</a></li> <li><a href="frame_2.html" target="mid_col">Load frame_2.html</a></li> <li><a href="frame_3.html" target="mid_col">Load frame_3.html</a></li> <li><a href="frame_4.html" target="mid_col">Load frame_4.html</a></li> </ul> </body> </html>

Теперь, когда мы загрузим веб-страницу, в левой боковой панели будут размещаться четыре ссылки навигации. При нажатии на ссылку содержимое файла загружается во фрейме среднего столбца с атрибутом name=»mid_col». Вот, что мы увидим при загрузке страницы:

Если нажмем ссылку Load frame_1.html, содержимое этого файла загрузится в центральном столбце, и мы получим следующее:

Если нажмем ссылку Load frame_2.html, то увидим, что и в левой боковой панели, и в центральном столбце будут отображаться ссылки навигации:

При нажатии ссылок Load frame_3.html и Load frame_4.html в центральном столбце будет загружаться содержимое этих файлов. Если бы мы забыли добавить для одной из ссылок атрибут target=»mid_col», то при клике по ней файл будет загружаться в том фрейме, который содержит ссылку. Если мы хотим перезагрузить всю страницу, например, при переходе по ссылке на внешний сайт, нам нужно добавить атрибут target=»_blank» или target=»_top».

Предоставление резервного варианта noframes

В прошлом элемент noframes использовался, чтобы создать резервный вариант для браузеров, которые не поддерживают фреймы HTML. На текущий момент все современные браузеры поддерживают фреймы, а noframes практически не поддерживается. В результате нам больше не нужно создавать резервный вариант noframes при работе с фреймами.

Как сделать фреймы адаптивными

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

Использование строк, а не столбцов

Если это возможно, организуйте фреймы в ряды, а не столбцы. На маленьком экране гораздо легче перемещаться по контенту по вертикали, чем по горизонтали. Фреймы в HTML, которые расположены в ряд, намного проще просматривать на небольшом экране. Если мы уменьшим ширину макетов, содержащих строки и столбцы, имитируя экран Apple IPhone 6, то увидим, что строки намного удобнее просматривать, чем столбцы:

Используйте проценты для ширины столбцов

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

Как перейти с фреймов на другие технологии

И элемент frameset, и элемент frame были удалены из последней спецификации HTML5. Владельцы сайтов, созданных с использованием фреймов, должны выполнить перестройку своих ресурсов, чтобы исключить их из макета. В какой-то момент браузеры откажутся от поддержки фреймов. Таким образом отказаться от фреймов — это не просто желательно, это необходимо сделать.

Оценка контента, содержащегося во фреймах

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

  • Были ли фреймы использованы для создания конкретного макета? Если это так, для создания подобного макета может быть использован CSS;
  • Были ли фреймы использованы для создания контейнера с рекламой определенных размеров? Есть много способов воссоздать данный эффект с помощью CSS или виджетов, предназначенных для работы с CMS;
  • Были ли фреймы использованы для создания «прилипающих» меню навигации? Опять же, с помощью CSS может быть воссоздан тот же эффект;
  • Были ли фреймы использованы для загрузки контента с внешнего сайта? Если да, то элемент iframe, который является частью HTML5, может быть использован для встраивания контента с внешнего сайта.

Практически в каждом случае можно использовать CSS, чтобы воссоздать макет, разработанный с применением фреймов, а iframe можно использовать для встраивания внешних ресурсов.

Стратегия для вашего нового сайта

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

Переход на CMS на начальном этапе потребует больше времени, но в долгосрочной перспективе преимущества от запуска современного сайта перевесят краткосрочные сложности. Чтобы помочь вам определиться с системой управления контентом, рекомендуем обратить внимание на три самые популярные из них:

  • WordPress;
  • Joomla!;
  • Drupal.

Дополнительные ресурсы

Если вы хотите узнать о фреймах HTML больше, лучшим источником для получения дополнительной информации является World Wide Web Consortium (W3C). Вот некоторые из страниц с информацией о фреймах:

  • Документация HTML4 о фреймах;
  • Устаревшие функции HTML5

Связанные элементы

Название элемента Атрибуты Описание
noframes Элемент <noframes> использовался внутри родительского <frameset>, чтобы предоставить резервный вариант контента для пользователей, чьи браузеры, не поддерживали <frame>. На данный момент фреймы являются устаревшей технологией, поэтому элемент <noframes> не должен использоваться.
iframe sandbox

scrolling

name

align

frameborder

longdesc

marginwidth

src

vspace

width

<iframe> создает встроенный фрейм, который выводит в текущий документ независимый HTML-документ.
frameset frameborder

cols

bordercolor

Элемент <frameset> использовался, чтобы создать группу фреймов, которые могут управляться и стилизоваться, как одно целое. На данный момент фреймы в HTML устарели и не должны использоваться.
frame Src

name

marginwidth

scrolling

noresize

frameborder

bordercolor

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

Перевод статьи «Frames» был подготовлен дружной командой проекта Сайтостроение от А до Я.

www.internet-technologies.ru