- Как создать фреймы в HTML. Основы HTML для начинающих. Урок №16
- Что такое фрейм? Как создать фрейм в HTML?
- Что такое frame в HTML?
- Фреймы в HTML — шпаргалка для начинающих
- Учебник HTML 5. Статья «Фреймы»
- Фреймы в html | html создание фреймов
- Фреймовая структура html, атрибуты фреймов
- фреймов в HTML-документах
- Вот как сделать их отзывчивыми »
- Кадр 1
- Кадр 1
- Кадр 2
- Использование HTML-тега для создания встроенных фреймов: вот как »
- Как использовать теги в HTML-коде
- Тег набора фреймов HTML - GeeksforGeeks
- - HTML: язык разметки гипертекста
- HTML-фреймов - Простое руководство по HTML
Как создать фреймы в 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 — горизонтально
cols — вертикально
В атрибутах cols и rows указывается, на сколько частей делить окно браузера. Вот, например, чтобы разделить окно браузера на две вертикальные части, нужно прописать вот так:
<frameset cols="30%,*">
Левая часть экрана будет размером 30%, а правая – 70%.
Если хотите разделить браузер еще на несколько частей, допишите через запятую дополнительные размеры, вот, например, так:
<frameset cols="30%,20%,10%,40%">
В итоге первая вертикальная колонка будет шириной 30%, вторая — 20%, третья — 10%, четвертая — 40%.
Разобрались?
Так же и с горизонтальной разбивкой:
<frameset rows="30%,20%,10%,40%">
Первая горизонтальная колонка будет шириной 30%, вторая — 20%, третья — 10%, четвертая — 40%.
○ тег 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>
Результат будет таким:
* Атрибуты тега frame
- src – адрес веб страницы. src=»1.html»;
- marginwidth – отступ внутри фрейма по ширине. Пример: marginwidth=»10″;
- marginhight – отступ внутри фрейма по высоте. Пример: marginhight =»10″;
- scrolling – прокрутка фрейма через скролл.
— yes – скролл будет присутствовать во фрейме. Пример: scrolling =»yes»;
— no – скролл не будет присутствовать во фрейме. Пример:
— auto – скролл будет присутствовать во фрейме при необходимости. Пример: scrolling =»auto»; - noresize – запрещает двигать границы фрейма.
- name – имя фрейма. Указывает, в каком окне нужно открывать другие фреймы. Пример: name =»stepkinblog-ru»;
○ Ссылки во фреймах или учимся пользоваться атрибутом «name»
Если фрейму не прописать имя в атрибуте «name», то при нажатии по ссылке откроется новый фрейм в том окне, где была ссылка:
[яркий пример, где нет атрибута «name»]
А вот пример, если прописать атрибут «name»:
[яркий пример с атрибутом «name»]
Правда, так лучше?
Для любого фрейма пропишите атрибут «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»»
Со ссылками разобрались. Переходим к практике.
ПРАКТИКА
Задание: Нужно создать фреймы вот по такому макету:
Вначале создадим три горизонтальных фрейма:
<frameset rows="15%,*,15%"> </frameset>
Теперь добавим «top.html» и «footer.html»
<frameset rows="15%,*,15%"> <frame src="top.html"> <frame src="footer.html"> </frameset>
Результат пока что будет вот таким:
Теперь между «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
Что такое фрейм? Как создать фрейм в HTML?
Как запустить видеоурок:- Разархивировать скачанный файл.
- Открыть папку index.
- Запустить файл index.html в браузере.
Недостатки фреймов
Я не буду давать про них много информации, так как тема сама по себе и так объемная, но недостатки фреймов я вам сейчас приведу:
- При использовании фреймов, в контенте обычно нет ссылок, а это плохо сказывается на индексировании сайта поисковиками.
- Второй минус для пользователей. Заключается он в том, что фреймы показывают лишь title (название) одной страницы. Из-за этого пользователь не сможет поместить понравившуюся ему страницу в избранное.
- Поисковики индексируют только те страницы, которые заложены в страничку «Главная» — в страничку фреймов. Поэтому пользователь, переходящий через поисковик на какую-нибудь страничку вашего сайта, откроет ее, и у него не будет показана ни навигация, ни логотип, то есть будет показан не только контент.
- Последний минус появляется при большом количестве страниц во фрейме. То есть если у нас в фрейм страницы заложены и логотип, и меню, и контент, и второе меню, и футер, и еще какие-нибудь фреймы, то это дает очень большую нагрузку на браузер пользователя и требует больше информации. В итоге расходуется больше памяти — это тоже доставляет неудобство.
Что такое фрейм?
Фрейм, говоря простым языком, — это страница, в которой находится несколько страниц. Сейчас объясню. У нас есть страница. В ней есть еще две страницы. Одна страница — наш логотип, вторая — меню, третья — контент. Такую страницу мы и будем сейчас создавать. Прежде, чем приступим к созданию такого фрейма, хочу предупредить, что в версии HTML5.0 фреймы не поддерживаются. Но так как мы изучаем HTML 4.01, то мы их разберем.
Как создать фрейм в HTML?
Перейдем на наш рабочий стол. Создадим еще папку. Назовем ее Frames. Откроем ее и свернем. Зайдем в папку site2. Скопируем из нее индексный файл и вставим его в папку Frames. Откроем файл через notepad и удалим все ненужное, в том числе и тег <body>.
<!DOCTYPE HTML Public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Главная страница</title> <meta http-equiv="Content-Language" content="ru"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta name="keywords" content="Мой, личная, страница, info, line, net, рассказ, сайт"> <meta name="description" content="Моя личная страница! Сказ о том, зачем я создал сайт info-line.net"> </head> </html>
— Эй, Олег, где мое тело?
— Мы тебя трансформируем.
Прописываем <frameset></frameset>. Про тег <body> мы забываем.
<!DOCTYPE HTML Public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Главная страница</title> <meta http-equiv="Content-Language" content="ru"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta name="keywords" content="Мой, личная, страница, info, line, net, рассказ, сайт"> <meta name="description" content="Моя личная страница! Сказ о том, зачем я создал сайт info-line.net"> </head> <frameset> </frameset> </html>
Сохраним наш документ и создадим еще один. Копируем в него какой-нибудь индексный файл. Удаляем здесь все, что находится в теге <body>. Тег <body> не трогаем. И пишем сюда изображение.
<!DOCTYPE HTML Public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Главная страница</title> <meta http-equiv="Content-Language" content="ru"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta name="keywords" content="Мой, личная, страница, info, line, net, рассказ, сайт"> <meta name="description" content="Моя личная страница! Сказ о том, зачем я создал сайт info-line.net"> </head> <body> <img src="logo.png" > </body> </html>
Давайте сохраним нашу страничку в папку Frames. Назовем ее header.html.
Перейдем на рабочий стол, зайдем в папку site2, скопируем изображение info- line из папки img, переименуем в logo и закроем папку site2.
Теперь создаем еще один документ. Это будет меню. Копируем все, что находится в документе header.html и «img src» меняем на меню, которое мы прописывали в таблице в 12 уроке.
<!DOCTYPE HTML Public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Главная страница</title> <meta http-equiv="Content-Language" content="ru"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta name="keywords" content="Мой, личная, страница, info, line, net, рассказ, сайт"> <meta name="description" content="Моя личная страница! Сказ о том, зачем я создал сайт info-line.net"> </head> <body> <div>Меню:</div> <p><a href="index.html">Главная</a><p> <p><a href="form.html">Обратная связь</a><p> <p><a href="#">Ссылка №3</a><p> <p><a href="#">Ссылка №4</a><p> </body> </html>
Сохраняем как menu.html. Создадим третью страничку — контент. Копируем из того же файла наш контент. Сохраним как content.html.
Мы все сделали. Теперь перейдем в файл index.html. Тег <frameset> имеет атрибут rows, означающий высоту. Высота указывается по порядку тех фреймов, которые будут прописаны ниже. Прописываются они с помощью тега <frame> и атрибуда src. Тег <frame> закрывающего тега не имеет. В кавычках указывается путь к документу. Первым пусть идет логотип, потом меню и третьим — контент.
<frameset rows=""> <frame src="header.html"> <frame src="menu.html"> <frame src="content.html"> </frameset>
Давайте теперь укажем высоту. Поясню. Страница будет выглядеть так: сначала идет логотип, потом меню, остальное занимает контент. Пропишем это. Например, под логотип выделим 150 пикселей. Ставим запятую. На меню выделяем 200 пикселей. Снова ставим запятую. И на контент мы не можем выделить конкретное число пикселей, потому что не знаем точно, сколько он займет, поэтому поставим звездочку. Она означает «все остальное пространство».
<frameset rows="150, 200, *">
Сохраним. Проверим в браузере. Смотрим, что у нас получилось. Идет логотип (можно было фрейм для логотипа сделать больше либо уменьшить сам логотип). Потом — меню (с ним все нормально). Далее — контент с полосой прокрутки. Кстати, мы можем двигать наши фреймы: некоторые делать шире, некоторые — уже.
Давайте теперь сделаем нашу страничку следующего вида: слева — логотип, потом меню, оставшееся место — контент. Грубо говоря, мы повернем страницу на 90 градусов.
Перейдем в код и заменим атрибут rows на cols. Значения оставим те же.
<frameset cols="150, 200, *">
Сохраняем, переходим в браузер. Проверяем. У нас получилось то, что мы задумали.
Усложняем задачу — создадим то, что мы планировали. В верхнем левом углу — логотип, под ним — меню. Остальное место займет контент.
Давайте перейдем в наш код и разберемся, как это делать. Подводный камень тега <frameset> заключается в том, что мы не можем использовать вместе атрибут cols и rows. Как же нам поступить в этом случае? Мы добавим еще один фрейм в наш настоящий фрейм. Но сначала перейдем в хедер и уменьшим логотип. Мы уже знаем, как это делать.
<img src="logo.png">
Сохраняем. Перейдем снова в index.html. Прописываем еще один тег <frameset> . В ширине указываем ширину наших полей: хедера и меню. Она у нас будет равна 150, допустим. Потом идет ширина контента — это оставшаяся часть. Она равна звездочке. В следующем теге <frameset> мы указываем высоту логотипа — 150 пикселей, потом идет запятая и звездочка. То есть menu.html будет занимать оставшееся место на странице.
<frameset cols="150,*"> <frameset rows="150,*"> <frame src="header.html"> <frame src="menu.html"> </frameset> <frame src="content.html"> </frameset>
Давайте сохраним и проверим в браузере. Обновим страницу — получили то, что хотели. Давайте только увеличим расстояние до двухсот.
<frameset cols="200,*"> <frameset rows="200,*"> <frame src="header.html"> <frame src="menu.html"> </frameset> <frame src="content.html"> </frameset>
Сохраним и посмотрим. Именно такой макет был у учебника, по которому я учил HTML. Прокручивая контент, меню остается на месте. При нажатии по ссылке «Обратная связь», если мы добавим страничку «Обратная связь» в папку с фреймом, то она должна отобразиться на месте контента.
На этом мы заканчиваем этот видеоурок. Поэкспериментируйте с фреймами. Попробуйте другие формы. Поставьте себе какие-нибудь задачи, выполните их и приступайте к следующему видеоуроку, в котором мы разберем последнюю тему — это интересные теги и все, что мы упустили по прохождении курса.
Что такое frame в 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 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> отвечает за свойства каждого фрейма в наборе фреймов, заключенного в тег 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?» , подготовленная редакцией проекта.
Фреймы в HTML — шпаргалка для начинающих
На многих современных сайтах присутствуют «прилипающие» меню навигации, которые отображаются либо в боковой панели, либо в верхней части, когда вы прокручиваете страницу вверх и вниз. Но свойства CSS, которые позволяют создавать «прилипающие» меню, не всегда поддерживается браузерами. Ранее для реализации подобного функционала использовались фреймы в HTML.
При использовании frameset вы разделяете видимую часть окна браузера на несколько фреймов. Каждый фрейм имеет собственное содержимое, которое не затрагивает содержимое следующего. Frames и Iframes выполняют аналогичную функцию — встраивают ресурс в веб-страницу, но они принципиально отличаются друг от друга:
- Frames — это элементы, определяющие макет;
- Iframes — элементы, добавляющие контент.
W3C признала фреймы устаревшими в HTML5. Данное решение было аргументировано тем, что фреймы HTML отрицательно сказываются на юзабилити и доступности. Давайте разберемся, обоснованы ли эти претензии.
- Проблемы юзабилити: с увеличением популярности мобильных устройств с небольшими экранами возникла необходимость того, чтобы сайты предлагали пользователям несколько представлений, которые изменяются в зависимости от размера окна просмотра. Хотя фреймами можно манипулировать, чтобы обеспечить определенную степень адаптивности, но они не слишком хорошо подходят для создания адаптивных сайтов;
- Доступность: экранные дикторы и другие вспомогательные технологии довольно плохо считывают и взаимодействуют с сайтами, которые используют фреймы.
В данный момент в веб-разработке прослеживается глобальная тенденция разделения содержимого веб-страницы от ее представления:
- Содержимое должно добавляться и определяться разметкой, например, через HTML;
- Представление определяется языками, такими как CSS и JavaScript.
Использование фреймов изначально предполагает создание специфического внешнего вида и структуры, в то время как задачи представления должны обрабатываться с помощью CSS.
Хотя на сегодняшний день все современные браузеры поддерживают фреймы, W3C однозначно заявила, что фреймы «не должны использоваться веб-разработчиками«. Если у вас есть сайт, который использует фреймы, вам стоит задуматься о переходе на другие технологии. В какой-то момент браузеры перестанут поддерживать фреймы, и, когда это произойдет, сайты, применяющие их, станут непригодными для использования.
В разработке новых сайтов фреймы использоваться не должны, но для веб-мастеров, которые занимаются поддержкой старых ресурсов, умение применять их может оказаться полезным.
Основная концепция фреймов довольно проста:
- Используйте элемент 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 помимо определения стилей самих документов:
- Может быть определен или зафиксирован размер каждого фрейма;
- Может быть изменен отступ между фреймами;
- Может быть задан формат рамки вокруг каждого фрейма.
Эти изменения вносятся не через 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 использовался, чтобы создать резервный вариант для браузеров, которые не поддерживают фреймы 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» , подготовленная редакцией проекта.
Учебник HTML 5. Статья «Фреймы»
В это статье Вы узнаете, что такое фреймы, для чего они нужны, где и как применяются, кроме того, Вы познакомитесь как в HTML выделяют контактную информации и используют аббревиатуру.
Не так давно фреймы использовались в качестве навигации по сайту, когда навигационная страница располагалась в одном окне, а страницы с контентом, располагались в других документах. В настоящее время использование фреймов на страницах сайтов можно встретить все реже, это как правило, какие-то примеры кода с «песочниц» (выделенная среда для исполнения компьютерного кода), участки Google Maps (необходимо задавать адрес в такой форме: https://maps.google.com?output=embed), либо видео, размещенное с видео хостинга YouTube.
Тег <iframe> (HTML Inline Frame Element) определяет встроенную в веб-страницу область, которая может отображать содержимое отдельно взятого документа (например, *.pdf), медиа-контента или другого веб-сайта в заданном пространстве. Содержимое внутри области существует независимо от окружающей страницы.
Синтаксис для добавления фрейма:
<iframe src = "URL"> </iframe>, где src атрибут, который определяет местоположение документа или веб-сайта.
Обращаю Ваше внимание, на то что некоторые сайты, например такие как поисковые системы, блокируют возможность размещения страницы сайта во фреймах, либо осуществляют переход по таймеру на свою «реальную» страницу.
В следующем примере мы возьмем в качестве загрузки во фрейм отличный сайт — TinyPng.com, который предоставляет возможность сжимать изображения, предназначенные к загрузке на Ваш сайт. Как правило, удаётся уменьшить размер изображений на 50%, а то и больше, что значительно уменьшает их объем, экономит дисковое пространство и увеличивает скорость загрузки страниц.
<!DOCTYPE html> <html> <head> <title>Пример использования элемента <iframe></title> </head> <body> <iframe name = "myframe" width = "665px" height = "265px" src = "https://tinypng.com"></iframe><br> <!-- в атрибуте src указываем абсолютный адрес сайта, который хотим открыть во фрейме --> <a href = "https://tinypng.com" target = "myframe">TinyPng</a> <!-- указываем, что ссылка откроется во фрейме --> <a href = "moscow.jpg" target = "myframe">Moscow</a> <!-- задаем относительный путь к изображению и имя фрейма, где оно откроется --> <a href = "paris.jpg" target = "myframe">Paris</a> <!-- задаем относительный путь к изображению и имя фрейма, где оно откроется --> <a href = "london.jpg" target = "myframe">London</a> <!-- задаем относительный путь к изображению и имя фрейма, где оно откроется --> </body> </html>
В этом примере мы:
- Элементом <iframe> создали фрейм, которому атрибутом name задали имя — «myframe», атрибутом width установили ширину фрейма «665px», а атрибутом height высоту фрейма «265px» . В обязательном атрибуте src указали абсолютный адрес сайта, который хотим открыть во фрейме «https://tinypng.com».
- Разместили четыре ссылки, при клике на которые ссылка открывается непосредственно во фрейме (в значении атрибута target указано имя нашего фрейма — «myframe»). Первая ссылка открывает сайт, загруженный изначально, а остальные три загружают различные изображения, находящиеся в той же папке, что и файл с примером.
Результат нашего примера:
Рис. 27 Пример использования фреймов в HTML.HTML аббревиатура и контактная информация
HTML тег <abbr> (HTML Abbreviation Element) определяет аббревиатуру или акроним. Маркировка сокращений является полезной информацией для браузеров, систем перевода и поисковых машин, для пользователя применение этого элемента не видимо.
Как правило, тег <abbr> применяется совместно с глобальным атрибутом title, для отображения полного описания аббревиатуры пользователю при наведении.
HTML тег <address> определяет контактную информацию (автор / владелец) документа или статьи. Если элемент <address> находится внутри тега <body>, то представляет контактную информацию для документа, а если находится внутри элемента <article> (статья), то он представляет контактную информацию для этой статьи.
Текст внутри элемента <address>, как правило, отображается курсивом. Элемент не должен использоваться просто для описания почтового адреса, если он не является частью контактной информации. Элемент, чаще всего, используют с другой информацией в элементе <footer> (нижний колонтитул или «подвал» сайта).
Об элементах, добавленных в HTML 5 — <footer> и <article> мы поговорим в статье «Теги разметки страницы в HTML».
Пример использования:
<html> <head> <title>Аббревиатура и контактная информация</title> </head> <body> <p><abbr title = "ВСЕРОССИЙСКИЙ НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ <!-- добавляем аббревиатуру с глобальным атрибутом title --> ГЕОЛОГИЧЕСКИЙ ИНСТИТУТ им. А.П. КАРПИНСКОГО">ВСЕГЕИ</abbr> является преемником и продолжателем традиций первого государственного геологического учреждения России – Геологического комитета, созданного в Санкт-Петербурге... <iframe src = "http://vsegei.ru"></iframe> <!-- добавляем фрейм с сайтом института --> <address style = "background-color: khaki"> 199106, Санкт-Петербург, Средний пр., 74</br> <!-- добавляем контактную информацию института --> E-mail: [email protected]</br> Сайт: http://vsegei.ru/ru/ </address> </body> </html>
В данном примере мы:
- Поместили аббревиатуру института в тег <abbr> и применили глобальный атрибут title, для того, чтобы при наведении на нее мышкой было понятно, что это высшее учебное заведение, а не то, что вы подумали.
- Кроме того загрузили во фрейм сайт данного учебного заведения (в обязательном атрибуте src указали абсолютный адрес сайта).
- Внизу страницы (внутри тега <address>) добавили адрес и контактные данные института, указанные на официальном сайте. Текст, помещенный внутрь этого тега, по умолчанию отображается курсивом. Кроме того для элемента <address> добавили глобальный атрибут style, которым задали встроенный CSS стиль (цвет заднего фона).
Рис 28 Аббревиатура и контактная информация в HTML.
Вопросы и задачи по теме
Перед тем как перейти к изучению следующей темы пройдите практическое задание:
- Для выполнения задания вам понадобится скачать архив и скопировать содержимое архива в любую папку на вашем жестком диске:
- Используя полученные знания составьте HTML страницу (practice_19.html в архиве), которая содержит фрейм и четыре ссылки:
- Первая ссылка загружает сайт «Википедии», или любой другой.
- Вторая ссылка загружает во фрейм изображение из папки (practice_19_1.jpg).
- Третяя ссылка загружает во фрейм изображение из папки (practice_19_2.jpg).
- Четвертая ссылка загружает во фрейм изображение из папки (practice_19_3.jpg).
Для фрейма задайте размер таким образом, чтобы он был по ширине и высоте изображений. В качестве адреса, который будет загружаться во фрейм можете выбрать сайт «Википедии», или любой другой.
- Результат примера вы можете скачать после выполнения задачи для самопроверки:
Фреймы в html | html создание фреймов
Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы разобрали, как установить favicon на сайт. В данной статье я бы хотел рассказать, что такое фреймы в html. В переводе с англ. фрейм означает «рамка». С точки зрения html, фрейм — это некая выделенная область на странице, которая ссылается на другую страницу и выводит её содержимое (той самой другой страницы или сайта). Стоит сразу отметить, что фреймы не получили большого развития и сейчас почти не используются, разве что в каких-то специализированных проектах.Всё то же самое можно сделать с помощью CSS и Javascript.
С помощью фрейма страницу можно разбить на несколько блоков, каждый из которых будет независим от других. Давайте создадим основной документ index.html и два вспомогательных (внутренних), содержимое которых как раз и будет отображаться на основной странице: menu.html (будет содержать разметку навигации по сайту) и content.html (контент сайта). Разметка index.html будет иметь следующий вид:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Фрэймы в HTML</title> </head> <frameset cols="40%, *"> </frameset> </html>
Обращаю ваше внимание, что здесь отсутствует тег <body>, вместо него появился тег <frameset>. У данного тега есть несколько атрибутов:
- cols — данный атрибут указывает, что фреймы будут помещены в столбцы. В значении данного атрибута через запятую указываются размеры фреймов. В нашем случае у нас будет 2 фрейма. Ширина первого будет 40% от ширины страницы, * означает всё остальное пространство страницы (в данном случае можно было написать и 60%). Также размер можно задавать и в пикселях.
- rows — данный атрибут указывает, что фреймы будут помещены в строки.
Содержимое файла menu.html имеет вид:
<ul> <li>1 пункт меню</li> <li>2 пункт меню</li> <li>3 пункт меню</li> </ul>
Содержимое файла content.html имеет вид:
<div> <h2>Тестируем фреймы</h2> <p>Абзац текста</p> </div>
Чтобы вывести содержимое другого документа нужно использовать тег <frame> с атрибутом src, в значении которого указывается путь до файла. Также можно указывать url сайта, который мы хотим вывести в этом блоке. Для начала давайте выведем наши страницы menu.html и content.html:
<frameset rows="50%, *"> <frame src="menu.html"/> <frame src="content.html"/> </frameset>
Обязательно наберите данный код, чтобы посмотреть как это всё работает.
У тега frame существуют следующие атрибуты:
- src — путь до страницы или же url-адрес сайта (страницы сайта). Стоит отметить, что у некоторых сайтов существует защита от встраивания,
- name — присваивает фрейму имя, с помощью которого данным фреймом можно управлять,
- noresize — запрещает изменять размер фрейма,
- scrolling — возможность прокручивать содержимое.
В качестве домашнего задания создайте 2 фрейма и разместите их в строку. В качестве значения атрибута src укажите путь до сайтов.
Весь код можно посмотреть под хайдом.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Фрэймы в HTML</title> </head> <frameset rows="50%, *"> <frame src="https://alekseygulynin.ru/"/> <frame src="https://alekseygulynin.ru/"/> </frameset> </html>
В данной статье вы узнали, что такое фреймы в html и как их использовать.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.
Фреймовая структура html, атрибуты фреймов
Цель урока: изучение возможностей создания фреймов в html
Фреймовая структура в HTML
С самого начала следует сказать, что прием использования фреймовой структуры хоть и очень удобен в некоторых случаях, тем не менее, использование структуры не желательно для коммерческих проектов.
Элемент frameset
Синтаксис деления по вертикали (на колонки):
<FRAMESET cols="n%,n%"> … </FRAMESET><FRAMESET cols=»n%,n%»> … </FRAMESET>
где
n
— ширина фреймов в процентах слева направоСинтаксис деления по горизонтали:
<FRAMESET rows="n%,n%"> … </FRAMESET><FRAMESET rows=»n%,n%»> … </FRAMESET>
где
n
— высота фреймов в процентах сверху внизФреймов в структуре может быть не два, а более.
Файл с фреймовой структурой называется файлом-раскладкой и обычно называется index.html
Как происходит загрузка файлов во фрейм рассмотрим на примере.
Синтаксис:
<FRAME src="Имя файла.html" name="имя фрейма"><FRAME src=»Имя файла.html» name=»имя фрейма»>
Пример: Создать файл с фреймовой структурой с двумя колонками: в левую (ширина 25%) загружать файл menu.html, в правую (ширина 70%) загружать файл content.html
Выполнение:
<html> <head> <title>Пример</title> </head> <frameset cols="25%, 75%"> <frame src="menu.html"> <frame src="content.html"> </frameset> </html> |
<html> <head> <title>Пример</title> </head> <frameset cols=»25%, 75%»> <frame src=»menu.html»> <frame src=»content.html»> </frameset> </html>
Задание 1:
Создать файл с фреймовой структурой (имя файла index.html) с тремя колонками (ширина: 25%, 50%, *). Создать три файла для загрузки в фреймы, расположить их в той же папке, в которой находится index.html: 1. menu.html (в нем расположить заголовок h2
«Меню»), 2. content.html (в нем расположить заголовок h2
«Контент»), 3. news.html (в нем расположить заголовок h2
«Новости»).
Поменяйте расположение с колонок на ряды (горизонтальное деление), посмотрите на результат.
Атрибуты тега frameset:frameborder
— значение 1 или 0 (есть или нету)border
— значение размера границыbordercolor
— цвет границыframespacing
— ширина граней фреймов в пикселях (только в IE)
<frameset cols="25%, 75%" frameborder="1" bordercolor="red" border="1"> |
<frameset cols=»25%, 75%» frameborder=»1″ bordercolor=»red» border=»1″>
Атрибуты элемента frame:name
— имя фреймаnoresize
— запрещает изменение размеров для определенного фрейма.scrolling
— управляет прокруткой внутри одной области (yes
, no
, auto
).marginheight
— задает величину отступа фрейма от верхнего и нижнего краев страницы.marginwidth
— создает поля слева и справаframeborder
— указывает, нужна или нет рамка вокруг фрейма (0 и 1)bordercolor
– цвет рамки
Правила создания ссылки во фреймах в html
Если представить структуру, в которой слева находится фрейм с меню сайта, а справа фрейм, предназначенный для вывода содержимого выбранных пунктов меню, то становится очевидна следующая проблема:
при щелчке на пункте меню содержимое будет загружаться в тот же фрейм с меню, а не во фрейм, расположенный справа
Важно: для загрузки пункта меню в определенный фрейм необходимо:
- добавить название необходимого фрейма при помощи атрибута
name
(в файле-раскладке)Пример:
<frame src="content.html" name="mainFrame"><frame src=»content.html» name=»mainFrame»>
- в файле с меню в гиперссылке добавить атрибут
target
Пример:
<a href="glava1.html" target="mainFrame" rel="noopener noreferrer"><a href=»glava1.html» target=»mainFrame» rel=»noopener noreferrer»>
Посмотрим полный код обоих файлов:
Файл index.html
<html> ... <frameset cols="25%, 75%"> <frame src="menu.html"> <frame src="content.html" name="mainFrame"> </frameset> </html> |
<html> … <frameset cols=»25%, 75%»> <frame src=»menu.html»> <frame src=»content.html» name=»mainFrame»> </frameset> </html>
Файл menu.html:
<html> ... <body> <h3>Меню:</h3> <ul> <li><a href="glava1.html" target="mainFrame" rel="noopener noreferrer">Глава 1</a></li> <li><a href="glava2.html" target="mainFrame" rel="noopener noreferrer">Глава 2</a></li> </ul> </html> |
<html> … <body> <h3>Меню:</h3> <ul> <li><a href=»glava1.html» target=»mainFrame» rel=»noopener noreferrer»>Глава 1</a></li> <li><a href=»glava2.html» target=»mainFrame» rel=»noopener noreferrer»>Глава 2</a></li> </ul> </html>
Вложенные фреймы
Работа с фреймами в html подразумевает и более сложную структуру.
Рассмотрим на примере:
Каким будет результат?
Встроенные (плавающие) фреймы
Такого вида фреймы нежелательно использовать в коммерческих проектах, они могут блокироваться браузером и неправильно восприниматься поисковыми системами
Пример плавающего фрейма:
1 2 3 4 5 6 7 8 | <html> ... <body> ... <iframe src="main.html"></iframe> ... </body> </html> |
<html> … <body> … <iframe src=»main.html»></iframe> … </body> </html>
Фрейм будет вставлен в виде окна указанных размеров (атрибуты width
и height
).
Дополнительные атрибуты:
name
— имя фреймаframeborder
— граница фреймаscrolling
— полоса прокруткиhspace
— отступы по горизонталиvspace
— отступы по вертикалиmarginwidth
— отступ внутренней страницы от границы фрейма по горизонталиmarginheight
— отступ внутренней страницы от границы фрейма по вертикали
iframe
).
Список файлов:
index.html - Главная раскладка с фреймовой структурой shapka.html - Название сайта menu.html - Меню home.html - Главная домашняя страница podval.html - Нижняя часть inner.html - Встроенный фрейм glava1.html - Глава 1 glava2.html - Глава 2
фреймов в HTML-документах
фреймов в HTML-документахHTML-фреймов позволяют авторам представлять документы в нескольких представлениях, что может быть независимыми окнами или подокнами. Несколько представлений предлагают дизайнерам способ сохранять определенную информацию видимой, в то время как другие представления прокручиваются или заменяются. Например, в одном окне в одном кадре может отображаться статический баннер, во-вторых, меню навигации, а в-третьих, основной документ, который можно прокручивать. через или заменяется навигацией во втором кадре.
Вот простой рамочный документ:
<ГОЛОВА>Простой документ с набором фреймов