Iframe и Frame — что это такое и как лучше использовать фреймы в Html. Использование фреймов в HTML Seo использование фреймов в html

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

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

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

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

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

Документ с фреймовой структурой создается при помощи тега и его закрывающего близнеца . Внутри этих двух тегов размещаются конструкции объявления отдельных фреймов и информация, отображаемая в окне просмотра браузера, если тот не распознает фреймы. Отдельные фреймы создаются при помощи пары тегов и . А информация, отображаемая, когда браузер не поддерживает фреймы, закладывается в HTML-документ при помощи тега </i>. Но все по порядку.</p><p>Основой тега <i><frameset> </i> является разбиение окна просмотра на несколько частей. Для этого у тега есть два основных параметра: rows и cols, которые указывают количество и размеры фреймов по вертикали и горизонтали. При этом задается прямоугольная табличная структура. Если нам необходимо сделать более детальное разбиение, например, один фрейм в левой части окна по вертикали и два фрейма, отделенных друг от друга горизонтальной границей в правой части окна, то можно создать два тега <i><frameset> </i>, один внутри другого. Но все-таки, рассмотрим параметры тега <i><frameset> </i> более детально.</p> <ul><li>Параметр <i>cols </i> предназначен для указания количества и размеров фреймов по горизонтали в окне просмотра. В качестве значения параметра используется список размеров фреймов, разделенных запятыми. Как обычно, для указания размера мы можем использовать абсолютные и кратные величины, а также процентные соотношения. По умолчанию используется значение 100%, т. е. основное окно просмотра по вертикали не разбивается.</li> <li>Параметр<i> rows </i>позволяет указывать количество и размеры фреймов по вертикали в окне просмотра, Специфика задания значений полностью совпадает с параметром cols.</li> </ul><p>Но рассмотрим на примере, как будет выглядеть создание HTML-документов с фреймовой структурой. Предположим, что нам необходимо один фрейм слева выделить под навигационное меню, а оставшееся пространство использовать для отображения информации с основных страниц Web-сайта. В этом случае, мы разделим окно просмотра на две части. Для меню мы выделим фрейм шириной в сто пятьдесят пикселов, а оставшееся пространство должен занять второй фрейм. Подобная структура Web-страницы реализуется при помощи кода, приведенного в листинге 1.31.</p> <p>Листинг 1.31</p> <p><i> <!DOCTYPE HTML PUBLIC "-//W3C/VDTD HTML 4.01//EN" ""http://www.w3.org/TR/html4/strict.dtd"><br> <fhtml><br> <head> .<br> <title>0peuMbi</title><br> </head><br> <frameset cols="150"><br> <frame src="l-27.htm"><br> <frame src="l-30.htm"><br> <noframes><br> <p>K сожалению, ваш браузер не поддерживает фреймы. Воспользуйтесь более свежей версией ПО</р><br>

Рассмотрим внимательно приведенный код HTML-документа и то, как был отображен браузером этот документ. Прежде всего, следует обратить внимание, что в листинге отсутствуют теги и </body> . Эти теги говорят о том, что все находящееся между ними является отображаемым кодом, а тег сигнализирует браузеру что в данном документе приведена лишь структура разбивка окна просмотра.

В теге мы использовали единственный параметр cols. Значением его был список из двух обозначений размеров. Из листинга видно, что первый, т. е. левый фрейм обладает шириной в сто пятьдесят пикселов. Для второго фрейма мы установили ширину в виде кратной величины. То, так как мы не указали, какому именно числу будет кратна эта ширина, фрейм занял все свободное место, чего мы и добивались.

Рис. 1.30. Окно браузера с результатом отображения файла, приведенного в листинге 1.31

Между стартовым и закрывающим тегами мы разместили два тега . Обстоятельнытй и подробный разговор о них еще впереди, а пока же ограничимся замечанием, что эти теги объявляют каждый фрейм по отдельности и задают их свойства. В нашем случае мы использовали лишь один обязательный параметр src, значением которого является URL того HTML-документа, который и будет отображаться в данном фрейме.

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

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

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

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







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

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

  • Параметр name позволяет устанавливать уникальное имя фрейма. Не следует путать его с параметром id. Имя, которое мы задаем при помощи параметра name, используется в тегах гиперссылок, когда необходимо загрузить документ не в родительский фрейм, а в какой-либо другой.
  • Параметр src, как мы уже видели из предыдущего листинга, применяется для задания URL того HTML-документа, который должен быть отображен в искомом фрейме.
  • Параметр frameborder применяется для того, чтобы указать, будет ли отображаться граница данного фрейма или нет. Дело в том, что создавать видимую границу далеко не обязательно. В качестве значения данного параметра используется либо нуль, либо единица. Единичное значение, установленное по умолчанию, обозначает, что данный фрейм будет иметь видимую границу. При использовании нулевого значения, граница фрейма будет невидимой.
  • Параметр marginwidth позволяет задавать ширину полей данного фрейма в пикселах,
  • Параметр marginheght предназначен для установки размеров полей по вертикали в пикселах для данного фрейма.
  • Параметр noresize следует применять, если пользователь не должен иметь возможности передвигать границы фрейма, изменяя его размеры подобным образом. Если мы включаем его в состав тега , то пользователь не сможет изменять размеры данного фрейма. Параметр используется без значений.
  • Параметр scrolling позволяет пользователю Web-страницы управлять отображением полос прокрутки данного фрейма. В качестве значения используется одно из трех предустановленных ключевых слов. Значение auto, установленное по умолчанию, обозначает, что полосы прокрутки у фрейма будут появляться только в том случае, если содержимое данного фрейма не будет полностью укладываться в отображаемой области. Значение yes указывает браузеру, что для данного фрейма необходимо постоянно отображать полосы прокрутки, вне зависимости от того, насколько велика его отображаемая область, и как ровно в нее "укладывается" содержимое фрейма. Значение no заставляет браузер отображать фрейм вообще без полос прокрутки. Несмотря на то, что полосы прокрутки являются самым раздражающим пользователя компонентом, не следует пользоваться подобным значением без особых на то причин. Еще раз повторюсь, что нам заранее неизвестно, какое разрешение монитора установлено у пользователя, загрузившего нашу страницу, и каков размер окна просмотра браузера. А если там не окажется достаточно места для отображения содержимого фрейма полностью, и будут отсутствовать полосы прокрутки, пользователь вообще не сможет увидеть скрытую информацию.

Теперь, когда мы рассмотрели параметры тега , следует сделать маленькое дополнение, объясняющее одно незначительное ограничение параметра src , тесно связанное с дополнительным тегом </i>. Дело в том, что между этим тегом и его завершающим двойником <i> мы размещаем некое содержимое, которое будет отображено в том случае, если браузер пользователя не поддерживает отображение фреймов. Это содержимое, естественно, тоже может быть структурировано при помощи тегов HTML. Следовательно, там могут быть использованы гиперссылки и закладки, называемые также "якорями". Так вот, если мы в этом фрагменте создадим такую закладку, то мы не можем для какого-либо из фреймов значением параметра src сделать URL данной закладки.

Также мы можем указать фрейм, в который загрузка HTML-документа будет происходить по умолчанию. Как мы знаем, тег гиперссылки <а> обладает параметром target, в качестве значения которого записывается имя фрейма, где и будет отображаться содержимое HTML-документа, на который указывает гиперссылка. Но если мы используем данный параметр в теге , размещаемом, как мы помним, в заголовке HTML-документа, то все гиперссылки с неполным URL в параметре href , будут помещать документы, на которые они указывают, именно в тот фрейм, наименование которого обозначено в теге .

До сих пор мы не рассматривали отдельно тег </i>. Но дело в том, что данный тег не обладает какими-либо уникальными параметрами, кроме общераспространенных, а механизм его применения мы могли видеть в предыдущих примерах. Поэтому мы и не будем на нем долго задерживаться.</p><p>До сих пор мы рассматривали обычные фреймы, которые полностью разбивают окно просмотра браузера на отдельные области, и для использования которых необходимо применять документы со специализированной структурой. Но есть и другой вид фреймов, которые можно просто вставлять в обычный HTML-документ как стандартный объект. Больше всего это похоже на вставку графического изображения. Для вставки подобного встроенного фрейма используется тег <iframe> Но в отличие от процедуры вставки графики и иных объектов, для встроенных фреймов необходимо использовать и закрывающий тег </iframe> Приведем пример включения встроенного фрейма в обычный HTML-документ и посмотрим, как выглядит этот документ, при просмотре его в браузере.</p> <p>Листинг 1.32</p> <p><i><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" <br> "http://www.w3.org/TR/html4/strict.dtd"><br> <html> <br> <head><br> <title></title><br> </head><br> <body><br> <р>Текст со встроенным <iframe src="l-25.htm"> </iframe> фреймом</р><br> </body><br> </html> </i></p><p>Как видно из листинга и приведенной иллюстрации (рис. 1.31), процедура использования встроенных фреймов отнюдь не сложна. Но в листинге мы, как всегда, использовали простейший вариант по умолчанию, а ведь фрейм, пусть даже и встроенный, естественно должен иметь достаточно обширный список свойств отображения, которые регулируются при помощи параметров. Их мы сейчас и рассмотрим.</p> <ul><li>Параметр<i> name </i> позволяет задавать имя данного встроенного фрейма. Значением параметра является обычная текстовая строка. После этого на данный фрейм можно указывать в гиперссылках. Таким образом, мы получаем возможность динамического изменения содержимого встроенного фрейма.</li> <li>Параметр <i>src </i> предназначен для установки содержимого встроенного фрейма. Значением параметра является URL того HTML-документа, который будет загружен в этот встроенный фрейм.</li> <li>Параметр<i> frameborder, </i> наравне со многими другими параметрами, явно унаследован из обычных фреймов. Точно так же, как и там, он указывает браузеру, следует ли нет отображать границу у фрейма. В качестве значений используются нуль и единица. Единичное значение, установленное по умолчанию, обозначает, что границу встроенного фрейма необходимо отображать. Нулевое значение делает границу невидимой.</li> <li>Параметры <i>marginwidh </i> и <i>marginheight </i>задают ширину и высоту полей встроенного фрейма, соответственно. Значением параметров являются числа, выражающие размеры в пикселах.</li> </ul><p><img src='https://i0.wp.com/tepka.ru/html4b/31.jpg' width="100%" loading=lazy></p> <p>Рис. 1.31. <i>Окно браузера с результатом отображения файла, приведенного в листинге 1.32 </i></p> <ul><li>Параметр <i>scrolling </i> регулирует отображение полос прокрутки встроенного фрейма. В качестве значения используется одно из трех предустановленных ключевых слов. Значение auto, установленное по умолчанию, означает, что полосы прокрутки будут появляться только в том случае, когда содержимое фрейма будет больше по размерам, чем сам фрейм. Значение yes принудительно отображает полосы прокрутки в любом случае, а значение по запрещает браузеру отображать эти полосы прокрутки для данного фрейма вообще.</li> <li>Параметр <i>align </i> позволяет нам устанавливать выравнивание встроенного фрейма по вертикали или горизонтали относительно остального содержимого Web-страницы. Возможные значения точно такие же, как у одноименного параметра тега <img>, поэтому не стоит их еще раз повторять. И результат действия этих значений тоже был нами рассмотрен ранее.</li> <li>Параметр <i>height </i> предназначен для явной установки размеров встроенного фрейма по вертикали. В качества значения данного параметра может использоваться любое обозначение размера.</li> <li>Параметр <i>width </i>позволяет задавать ширину встраиваемого фрейма. Значение может задаваться в пикселах, кратных величинах или процентных соотношениях.</li> </ul><p>И на этом мы заканчиваем рассмотрение фреймов. Мы знаем о них все, что нам необходимо знать для эффективного использования фреймов.</p> <table width="635" border="0"><tr><td width="200"> </td><td> </td><td width="200"> </td> </tr></table> <p>Термин «фрейм» пришел к нам из английского языка. В переводе это слово означает «рамка» и представляет собой отдельную область окна. По своей структуре такой участок является полностью законченным HTML-документом.</p> <p>Отдельные фреймы делят окна браузера на участки, которые размещаются рядом. При этом внутрь каждого из фреймов загружается собственная полноценная страница. Фреймовая технология до сих пор вызывает много споров, но нужно сказать, что пик ее популярности уже прошел. В данный момент эта технология считается устаревшей, и обычные фреймы больше не поддерживаются в HTML5.</p> <h2>История технологии</h2> <p>Сегодня можно констатировать, что решение об отходе от работы с фреймовой технологией окончательно принято. На сайте https://www.w3.org/TR/html5-diff/#obsolete-elements четко указано, что обычные теги для создания такой структуры frame, frameset и noframes являются устаревшими. В качестве аргумента приводятся данные о том, что использование такой структуры отрицательно отражается на юзабилити сайтов и их доступности в сети.</p> <p>Но современные технологии поддерживают элемент IFRAME. Его использование позволяет вставлять фреймы в текстовые блоки на страницах. При этом такие элементы имеют возможность выравнивания относительно самого текста. Важный момент: изменять размеры встроенных фреймов нельзя в принципе. У них отсутствует соответствующий атрибут для изменения размеров.</p> <p>В будущем без скачкообразных изменений технологии дальнейшее применение фреймов маловероятно. И стоит помнить, что ведущая организация по стандартизации интернет-технологий - W3C - явно указала на то, что такие структуры не должны использоваться разработчиками сайтов.</p> <p>То есть фреймы в принципе не должны применяться для структуры страниц при создании новых ресурсов. А вот при поддержке и доработке имеющихся сайтов знание особенностей технологии и их использование будет весьма полезным и продуктивным.</p> <h2>Преимущества фреймов</h2> <p>Среди преимуществ фреймовой технологии - простота использования, высокая скорость работы, возможность точного позиционирования информации в определенных местах окна.</p> <p>Применение фреймов обеспечивает экономию на объеме передаваемого трафика в процессе работы с сайтом. Ведь при обращении к другому разделу информации обычно происходит обновление только одного участка страницы, а не всего ее кода.</p> <p>Такая структура обеспечивает интересные возможности навигации по контенту ресурсов. Ведь внутри окна браузера в соседних фреймах можно просматривать различные информационные блоки. Пользователям важно знать, что поиск по фрейму равнозначен выполнению такой операции на отдельной странице.</p> <p>В процессе работы с сайтом можно динамически менять размеры отдельного участка, что тяжело реализовать с использование других технологических решений.</p> <h2>Возможные недостатки</h2> <p>Проблемы работы сайтов с использованием фреймов накапливались постепенно, но на сегодня они достигли порогового значения. Среди основных недостатков выделяют:</p> <ol><li>Неудовлетворительное юзабилити. Сегодня доля пользователей мобильных устройств и планшетов с небольшим разрешением экрана растет и уже превышает число тех, кто посещает сайты со стационарных компьютеров и ноутбуков. И здесь применение фреймов создает серьезные проблемы с адаптивностью страниц при их отображении на различных устройствах. Эта проблема на сегодня практические не имеет решения.</li> <li>Ухудшение доступности сайта для различных программ. Увеличение количества дополнительных программ (например, экранные дикторы) выявляет гораздо худшую доступность информации для считывания.</li> <li>Неверное отображение страниц. Часто верстка страниц с такой структурой выглядит в браузерах некорректно с точки зрения дизайна. И это связано с особенностями технологии. С точки зрения SEO использование фреймов в html-верстке страницы весьма нежелательно.</li> <li>Наличие единого адреса для всей структуры. В результате внутренние страницы такого сайта невозможно добавить в закладки. Это приводит к неудобствам в работе пользователей.</li> <li>Некорректная индексация поисковиками. Наличие на сайте нескольких полноценных документов, из которых формируется одна страница, заметно затрудняет работу поисковых систем. Это приводит к существенным ошибкам при индексации. Как следствие - неправильное определение тематики и адресов страниц, выпадение критически важного контента из индексации.</li> <li>Непрестижность. Это довольно необычный недостаток для ресурсов в сети. И все же нужно сказать, что факт устаревания верстки сайтов на фреймах приводит к тому, что авторы и владельцы таких ресурсов считаются ретроградами. Но есть отдельные исключения. Даже современные сайты, в которых размещаются чаты, обычно используют работу с фреймами.</li> </ol><h2>Индексирование фреймов поисковиками</h2> <p>Информация, которая поступает из поисковых систем, однозначно говорит нам, что сайты с фреймами индексируются заметно медленнее. При этом часто возникают ошибки, связанные с самой структурой. Ведь в каждом из фреймов отображается полноценная интернет-страница. И в базу индексации может попадать именно такая часть сайта.</p> <p>Негативный момент такой индексации - при переходе на внутреннюю часть страницы пользователь обычно не видит меню и другие навигационные механизмы. И это неудивительно. Нужно понимать, что обновить фрейм - это не решение проблемы в данном случае. Ведь все навигационные механизмы размещаются в другом контейнере.</p> <p>Еще одна проблема заключается в том, что часто основная страница контейнерной структуры содержит только заголовок, описание метатегов и тег FRAMESET. И это вроде бы логично - ведь осмысленное содержание размещается в отдельных документах. Именно их посетитель сайта увидит на странице в рамках.</p> <p>Но вот поисковый робот такую страницу практически никогда не индексирует. Он не находит на ней содержания, полезного для посетителей. Поисковые боты настроены таким образом, что они стараются получить и проиндексировать информацию, размещенную внутри тега body. Именно там происходит поиск полезного для пользователя контента. А на фреймовой странице такого тега нет, он заменяется на FRAMESET.</p> <p>Частично эту проблему можно решить с применением NOFRAMES. Но на многих сайтах при обращении к нему отдается только информация о том, что браузер не поддерживает фреймы. И для просмотра страницы нужно использовать другую программу.</p> <p>Такие случаи создают много проблем пользователям, которые при переходе на сайт не видят меню и другую информацию, которая должна отображаться. В случае размещения на сайте фреймов его параметры с точки зрения SEO снижаются. При этом статистика поведения пользователей говорит о том, что авторитет ресурса у поисковых систем падает. Это однозначно отрицательно сказывается на посещаемости сайтов.</p> <p>Особенно тяжело поисковым системам и индексирующим ботам обрабатывать вложенные и множественные кадровые структуры. Тот факт, что каждый контейнер имеет все признаки отдельного документа, но не содержит полноценную навигационную и другую информацию, дополнительно усложняет ситуацию.</p> <p>Облегчить работу поисковых систем можно за счет применения правильной перелинковки на страницах. В этом случае необходимо продублировать все ссылки меню, чтобы их можно было найти внутри каждой отдельной части страницы. Но это заметно усложняет и замедляет работу по оптимизации сайта и обновлению информации на нем.</p> <p>Опыт многих оптимизаторов и вебмастеров также говорит о том, что страницы на фреймах не получают высоких мест в поисковой выдаче. Это происходит даже в том случае, если они попадают в базу индексации.</p> <h2>Особенности продвижения сайтов во фреймах</h2> <p>Некоторые системы поиска неправильно или очень некорректно индексируют файлы с фреймовой структурой. В результате индексная база заполняется не адресами родительских ресурсов (так, как должно было быть), а ссылками на дочерние сайты.</p> <p>Чтобы минимизировать проблемы индексации сайтов, основанных на фреймах, при их описании применяются специальные теги и параметры. Основным элементом контейнерной структуры является frameset. Именно он заменяет в исходном коде стандартный body;. Каждый отдельный контейнер в структуре описывается frame. Его количество в коде страницы отвечает числу отдельных участков, отображающихся в окне браузера при просмотре.</p> <p>Указанные теги стоит расположить на главной странице сайта, а затем продублировать содержание внутри каждого из них.</p> <p>Несмотря на то, что сайты с фреймами встречаются все реже, изучение HTML было бы неполным без рассмотрения темы о фреймах. К тому же фреймы в каком-то смысле заняли свою нишу и применяются для систем администрирования и справки. Там, где недостатки фреймов не имеют особого значения, а преимущества наоборот, активно востребованы.</p> <p>Для создания фрейма используется тег <frameset> , который заменяет тег <body> в документе и применяется для разделения экрана на области. Внутри данного тега находятся теги <frame> , которые указывают на HTML-документ, предназначенный для загрузки в область (рис. 13.1).</p> <p>Рис. 13.1. Пример разделения окна браузера на два фрейма</p> <p>При использовании фреймов необходимо как минимум три HTML-файла: первый определяет фреймовую структуру и делит окно браузера на две части, а оставшиеся два документа загружаются в заданные окна. Количество фреймов не обязательно равно двум, может быть и больше, но никак не меньше двух, иначе вообще теряется смысл применения фреймов.</p> <p>Рассмотрим этапы создания фреймов на основе страницы, продемонстрированной на рис. 13.1. Нам понадобится три файла: index.html — определяет структуру документа, menu.html — загружается в левый фрейм и content.html — загружается в правый фрейм. Из них только index.html отличается по структуре своего кода от других файлов (пример 13.1).</p> <p>Пример 13.1. Файл index.html</p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Фреймы</title> </head> <frameset cols="100,*"> <frame src="menu.html" name="MENU"> <frame src="content.html" name="CONTENT"> </frameset> </html> </p><p>В случае использования фреймов в первой строке кода пишется следующий тип документа.</p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> </p><p>Данный <!DOCTYPE> указывает браузеру, что он имеет дело с фреймами, эта строка кода является обязательной. Контейнер <head> содержит типовую информацию вроде кодировки страницы и заголовка документа. Вот только учтите, что заголовок остается неизменным, пока HTML-файлы открываются внутри фреймов.</p> <p>В данном примере окно браузера разбивается на две колонки с помощью атрибута cols , левая колонка занимает 100 пикселов, а правая — оставшееся пространство, заданное символом звездочки. Ширину или высоту фреймов можно также задавать в процентном отношении, наподобие таблиц.</p> <p>В теге <frame> задается имя HTML-файла, загружаемого в указанную область с помощью атрибута src . В левое окно будет загружен файл, названный menu.html (пример 13.2), а в правое — content.html (пример 13.3). Каждому фрейму желательно задать его уникальное имя, чтобы документы можно было загружать в указанное окно с помощью атрибута name .</p> <p>Пример 13.2. Файл menu.html</p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Навигация по сайту</title> </head> <body style="background: #f0f0f0"> </body> </html> </p><p>В данном примере серый фон на странице задается с помощью стилей, о которых речь пойдет далее.</p> <p>Пример 13.3. Файл content.html</p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Содержание сайта</title> </head> <body> <p>СОДЕРЖАНИЕ</p> </body> </html> </p><p>Рассмотрим более сложный пример уже с тремя фреймами (рис. 13.2).</p> <p><img src='https://i2.wp.com/htmlbook.ru/files/images/samhtml/fig_1_13_2.png' width="100%" loading=lazy></p> <p>Рис. 13.2. Разделение страницы на три фрейма</p> <p>В данном случае опять используется тег <frameset> , но два раза, причем один тег вкладывается в другой. Горизонтальное разбиение создается через атрибут rows , где для разнообразия применяется процентная запись (пример 13.4).</p> <p>Пример 13.4. Три фрейма</p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Фреймы</title> </head> <frameset rows="25%,75%"> <frame src="top.html" name="TOP" scrolling="no" noresize> <frameset cols="100,*"> <frame src="menu.html" name="MENU"> <frame src="content.html" name="CONTENT"> </frameset> </frameset> </html> </p><p>Как видно из данного примера, контейнер <frameset> с атрибутом rows вначале создает два горизонтальных фрейма, но вместо второго фрейма подставляется еще один <frameset> , который повторяет уже известную вам структуру из примера 13.1. Чтобы не появилась вертикальная полоса прокрутки, и пользователь не мог самостоятельно изменить размер верхнего фрейма, добавлены атрибуты scrolling="no" и noresize .</p> <h3>Что такое фреймы?</h3> <p>Чтобы сделать сайт более функциональным, разместить большое количество информации и ссылок в наиболее удобной для посетителя форме, вовсе необязательно использовать flash-технологии. Все это возможно силами языка html, на котором можно создать фреймы.</p> <p>Говоря обывательским языком, фреймы – это дополнительные полосы прокрутки в одном окне. Попадая на сайт, посетитель видит на одной и той же странице как бы сразу два окна – один, как правило, с пунктами меню или иной важной информацией, а другой – с контентом (текстом, ценами и т.д.). В этом случае посетитель может с большим удобством просматривать достаточно объемные страницы и иметь перед глазами самую важную информацию одновременно.</p> <p>Если углубиться в детали, то страница с фреймами состоит, как минимум, сразу из трех html-страниц – двух видимых пользователю и одной служебной (координирующей показ фреймов). Видимые страницы и являются фреймами, на которые можно попасть и по отдельности, и одновременно.</p> <p>Несомненно, важным преимуществом использования фреймов является высокое качество юзабилити. Интерфейс страницы становится в разы удобнее, чем при использовании стандартных способов разметки.</p> <p>В свое время, 5-6 лет назад, фреймы завоевали популярность среди многих вебмастеров. Сегодня они используются только на тех сайтах, где без них обойтись просто невозможно, так как, к сожалению, фреймы имеют существенные недостатки в плане продвижения.</p> <h4></h4> <h3>Фреймы - хорошо или плохо?</h3> <p>Рассматривать полезность фреймов можно с трех позиций – с позиции пользователя, с позиции seo-специалиста и вебмастера.</p> <p>В первом случае отношение к фреймам неоднозначное. С одной стороны, без них иногда просто не обойтись, и они с успехом заменяют открывающиеся в других окнах служебные страницы. Да и юзабилити больших по размеру страниц фреймы делают только лучше, ведь пользователь может в любой момент воспользоваться меню в другом окне.</p> <p>С другой стороны, они не очень-то и улучшают дизайн страницы. Довольно сложно добиться хорошего внешнего вида, если используются фреймы. И, конечно, далеко не все браузеры поддерживают фреймы, что может оттолкнуть целую армию потенциальных покупателей, клиентов или просто посетителей.</p> <p>С позиции вебмастера использование фреймов облегчает составление страниц и доведение до ума интерфейса. Ведь куда проще создать одну страницу со всем меню и другой важной информацией, чем вмещать этот контент на каждую страницу сайта. Впрочем, на этом упрощения заканчиваются и начинаются сложности, о которых неспециалисту знать необязательно. Тем более, что сейчас уже почти никто с чистым html не работает – CMS позволяют делать все автоматически.</p> <p>Позиция seo-специалиста куда более жесткая. Фреймы просто не пропускают поисковых роботов дальше главной страницы. Конечно, существуют некоторые хитрости, которые позволяют индексировать и внутренние страницы сайта, однако все же это именно «хитрости», которые не одобряет ни одна поисковая система .</p> <h3>Влияние фреймов на раскрутку сайта.</h3> <p>Каким бы опытным ни был специалист по раскрутке сайтов , он не сможет дать никаких гарантий в продвижении, если на ресурсе используются фреймы. К сожалению, данная технология входит в «черный список» элементов, усложняющих поисковое продвижение, наряду с flash и ворованным контентом. Но последний еще может быть не замечен, а вот о фреймах такого не скажешь.</p> <p>Итак, как и чем влияет использование фреймов на раскрутку?</p> <p>Влияние это серьезное. Дело в том, что именно на фреймах расположены все важные ссылки на внутренние страницы сайта. И для того, чтобы их прописать, верстальщику не нужно использовать теги <a href>…</a>. А именно по этому тегу поисковой робот и определяет, что перед ним – ссылка, по которой можно зайти на другую страницу и проиндексировать ее (либо добавить к ее ссылочному весу еще пару «хлебных крошек»).</p> <p>Поисковыми роботами индексируется только первая – главная – страница, на которую они попадают с посторонних ресурсов. Другие страницы остаются закрытыми для Яндекса и Гугла – ведь даже с других сайтов на них невозможно поставить ссылку из-за того, что фреймы скрывают истинные адреса страниц.</p> <p>Продвигать эффективно одну главную страницу сегодня уже невозможно – на ней невозможно указать все запросы , да и ПС будет куда подозрительнее относиться к такому «одностраничнику».</p> <p>Конечно, «народные умельцы» уже придумали способ проиндексировать внутренние страницы, поставив ссылки на них в установочный документ фреймов, да и адреса все-таки можно узнать, открыв страницу фрейма отдельно. Но нужны ли все эти сложности, если, отказавшись от таких технологий, можно добиться большего?</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> </div> <div class="clear"></div> </div> </article> <div class='yarpp-related'> <section id="related_posts"> <div class="block-head"> <span>Больше информации по теме</span> <div class="stripe-line"></div> </div> <div class="post-listing"> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/2149de5b0a55068109f0b44c11d741b3.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Яндекс Пипл — поиск людей в соц" / loading=lazy></div> <a class="post_7839" href="/kak-naiti-cheloveka-v-internete-samye-prostye-metody-yandeks-pipl-poisk-lyudei-v/">Яндекс Пипл — поиск людей в соц</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/14804da2c8935d3aeddfb0e10957d20d.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Исправляем проблемы с загрузчиком используя командную строку" / loading=lazy></div> <a class="post_7839" href="/fixboot-smogla-naiti-sistemnyi-disk-ispravlyaem-problemy-s/">Исправляем проблемы с загрузчиком используя командную строку</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/d0db4e02378ad6b5b4953112dac80a72.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Украли телефон - что делать?" / loading=lazy></div> <a class="post_7839" href="/ukrali-telefon---chto-delat-kak-otsledit-telefon-kak-naiti/">Украли телефон - что делать?</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/b74e9d30305c73622b2ca923e829131f.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Bootstrap - Создание галереи изображений" / loading=lazy></div> <a class="post_7839" href="/menyayushchiesya-fotografii-v-setke-jquery-bootstrap---sozdanie-galerei-izobrazhenii/">Bootstrap - Создание галереи изображений</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/f53f780e3202488bef1a4da82abf5f64.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Как сделать автообновление страницы в яндекс браузере Автообновление в Opera" / loading=lazy></div> <a class="post_7839" href="/avtoobnovlenie-stranicy-v-brauzere-kak-sdelat-avtoobnovlenie-stranicy-v-yandeks/">Как сделать автообновление страницы в яндекс браузере Автообновление в Opera</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/5a2d59797697e8ee393a793dcd631195.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Как сделать приложение или игру для андроид Способы и стоимость создания приложения" / loading=lazy></div> <a class="post_7839" href="/razrabotka-android-prilozhenii-osnovnye-instrumenty-kak-sdelat/">Как сделать приложение или игру для андроид Способы и стоимость создания приложения</a></div> </div> </section> </div> <div id="comments"> <ol class="commentlist"> <div class='rreekk' rel='15'> <div id="smartrotator_ad_4" onclick="yaCounter40492595.reachGoal ('tizercommentbefore1'); return true;"></div> </div> </ol> <div class="clear"></div> <div id="respond" class="comment-respond"> </div> </div> </div> <aside id="sidebar"> <div class="theiaStickySidebar"> <div class="execphpwidget"> <div id="text-4" class="widget widget_text"> <div class="widget-top"> <span>Полезное</span> <div class="stripe-line"></div> </div> <div class="widget-container"> <div class="textwidget"> <style> .wpp-list li img { -webkit-border-radius: 65px; -moz-border-radius: 65px; border-radius: 65px; } .wpp-list li .post-views { display: block; margin-left: 70px; color: #828283; font-size: 12px; } .wpp-list li .post-views i { font-size: 13px; } .wpp-list li { line-height: 22px !important; } .replacemy { cursor: pointer; } } </style> <ul class="wpp-list"> <li> <div class="replacemy"><img src="/uploads/94f5519ca237e87c01dbae1bd1314479.jpg" width="65" height="65" title="Что делать, если вместо текста иероглифы (в Word, браузере или текстовом документе) Непонятные иероглифы вместо букв" alt="Что делать, если вместо текста иероглифы (в Word, браузере или текстовом документе) Непонятные иероглифы вместо букв" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/v-dokumentah-vmesto-teksta-otobrazhayutsya-ieroglify-chto-delat-esli-vmesto/" class=""><br>Что делать, если вместо текста иероглифы (в Word, браузере или текстовом документе) Непонятные иероглифы вместо букв</a></li> <li> <div class="replacemy"><img src="/uploads/676f48b5f6d021bdc3d89bee705135d7.jpg" width="65" height="65" title="Часы пропеллер на pic16f628a своими руками" alt="Часы пропеллер на pic16f628a своими руками" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/chasy-propeller-na-pic16f628a-svoimi-rukami-chasy-boba-blika-chasy/" class=""><br>Часы пропеллер на pic16f628a своими руками</a></li> <li> <div class="replacemy"><img src="/uploads/3717c2a058018e21f48abfc24ef969e2.jpg" width="65" height="65" title="Почему Не работает вентилятор на ноутбуке!" alt="Почему Не работает вентилятор на ноутбуке!" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/kompyuter-ne-vklyuchaetsya-no-ventilyatory-sistemnogo-bloka-rabotayut-pochemu-ne/" class=""><br>Почему Не работает вентилятор на ноутбуке!</a></li> <li> <div class="replacemy"><img src="/uploads/9639f33d2a4dc30cfae59fe9bc04e261.jpg" width="65" height="65" title="Калорийность, химический состав и пищевая ценность" alt="Калорийность, химический состав и пищевая ценность" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/recept-morkov-po-koreiski-kaloriinost-himicheskii-sostav-i-pishchevaya/" class=""><br>Калорийность, химический состав и пищевая ценность</a></li> <li> <div class="replacemy"><img src="/uploads/e8d1bcbcf38a224a1ea68181a334123c.jpg" width="65" height="65" title="Почему картридж может течь после заправки Что делать если картридж подтекает" alt="Почему картридж может течь после заправки Что делать если картридж подтекает" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/vozmozhnye-neispravnosti-kartridzhei-struinyh-printerov-i/" class=""><br>Почему картридж может течь после заправки Что делать если картридж подтекает</a></li> </ul> </div> </div> </div> </div> </div> <div> </div> </aside> <div class="clear"></div> </div> <footer id="theme-footer"> <div id="footer-widget-area" class="wide-narrow-2c"><div id="footer-first" class="footer-widgets-box"><div id="text-2" class="footer-widget widget_text"><div class="footer-widget-top"></div><div class="footer-widget-container"><div class="textwidget"> <p>Все о современной технике. Ошибки. Игры. Поломки. Техника. Интернет <p></p> </div></div></div></div><div id="footer-second" class="footer-widgets-box"><div id="text-3" class="footer-widget widget_text"> <div class="footer-widget-top"></div> <div class="footer-widget-container"> <div class="textwidget"><a href="/sitemap.xml">Карта сайта</a></div> </div> </div><div id="text-7" class="footer-widget widget_text"><div class="footer-widget-top"></div><div class="footer-widget-container"><div class="textwidget"><br> <a href="/feedback/">Обратная связь</a> </div></div></div></div></div><div class="clear"></div> </footer> <div class="clear"></div> <div class="footer-bottom"> <div class="container"> <div class="alignright"></div> <div class="alignleft"> © Copyright 2024, https://qzoreteam.ru</div> <div class="clear"></div> </div> </div> </div> </div> </div> <div id="topcontrol" class="fa fa-angle-up" title="Перейти к началу страницы"></div> <div id="fb-root"></div> <script type="text/javascript"> jQuery(function($) { $(document).on("click", ".pseudo-link", function() { window.open($(this).data("uri")); }); }); </script> <script type='text/javascript'> /* */ var tocplus = { "smooth_scroll": "1", "visibility_show": "\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c", "visibility_hide": "\u0441\u043a\u0440\u044b\u0442\u044c", "width": "310px" }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/wp-polls/polls-js.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/wp-postratings/js/postratings-js.js'></script> <script type='text/javascript'> /* */ var tie = { "mobile_menu_active": "true", "mobile_menu_top": "", "lightbox_all": "", "lightbox_gallery": "", "woocommerce_lightbox": "", "lightbox_skin": "dark", "lightbox_thumb": "vertical", "lightbox_arrows": "true", "sticky_sidebar": "", "is_singular": "1", "SmothScroll": "true", "reading_indicator": "", "lang_no_results": "\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c", "lang_results_found": "\u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b" }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/themes/pochk/js/tie-scripts.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/themes/pochk/js/ilightbox.packed.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript'> /* */ var gglcptch_pre = { "messages": { "in_progress": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 Google reCAPTCHA.", "timeout": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c Google reCAPTCHA. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0412\u0430\u0448\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0442\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443." } }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/google-captcha/js/pre-api-script.js'></script> <script type='text/javascript' data-cfasync="false" async="async" defer="defer" src='https://www.google.com/recaptcha/api.js?onload=gglcptch_onload_callback&#038;render=explicit'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/google-captcha/js/script.js'></script> <script type="text/javascript" src="https://qzoreteam.ru/wp-content/themes/pochk/my/my.js"></script> <script type="text/javascript" src="https://qzoreteam.ru/wp-content/themes/pochk/my/etimer.js"></script> </body> </html>