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

09.07.2019

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

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

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

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

  • Попробуй сам »
frame_top
frame_left frame_right



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

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

  • rows — описывает разбиение страницы на строки:
  • cols — описывает разбиение страницы на столбцы:
Области, полученные в результате такого разбиения страницы, и будут являться фреймами. Отсутствие этих атрибутов определяет один фрейм, который займет все окно браузера.

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

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

Как видно из данного примера, контейнер с атрибутом rows вначале создает два горизонтальных фрейма, а вместо второго фрейма подставляется еще один , который разбивает нижний горизонтальный фрейм на две колонки с помощью атрибута cols , левая колонка занимает занимает 20%, а правая 80% окна браузера.
Если браузер не поддерживает фреймы, то в окне будет отображен текст, расположенный между тегами </b> и <b> . Все, что находится между тегами </b> и <b> , игнорируется браузерами, поддерживающими фреймы. Таким образом разработчику нужно написать код, дублирующий содержимое фреймов другими средствами, и поместить этот код в контейнер </b> , тогда все пользователи смогут увидеть его веб-страницу.<br> Как уже отмечалось, для вставки в документ отдельного фрейма служит непарный тег <b><frame> </b> . Атрибут <b>src </b> задает документ, который должен отображаться внутри данного фрейма, например: <frame src="frame_top.html">. Если атрибут <b>src </b> отсутствует, отображается пустой фрейм.</p> <h2>Границы или пространство между фреймами</h2> <p>По умолчанию, браузер отображает серую и, как правило, в виде трехмерной линии границу между фреймами, с помощью которой посетители могут регулировать размер фрейма.<br> Границей фрейма можно управлять, как и любыми другими элементами фрейма. Для этого существует несколько атрибутов элемента <b><frameset> </b> , позволяющих настраивать границы фреймов. Толщина линии границы определяется атрибутом <b>border </b>. По умолчанию значение толщины границы равно пяти.<br> Чтобы скрыть границу фрейма, необходимо либо указать значение ширины границы равным нулю, либо присвоить значение «no» или «0» атрибуту <b>frameborder </b>. Атрибут <b>frameborder </b> может принимать только два противоположных значения. Если значение атрибута <b>frameborder </b> равно «yes» или «1», то граница фреймов будет отображаться, а если «0» или «no», то нет. Учтите, что значения атрибута <b>frameborder </b> различаются для разных браузеров. Чтобы решить эту проблему используйте дважды атрибут <b>frameborder </b>, а для некоторых браузеров требуется еще добавить атрибут <b>framespacing </b> со значением «0»:</p><p> <frameset frameborder="0" framespacing="0" frameborder="no" border="0"> </p><p>В следующем примере убираем границу между фреймами:</p> <h3>Пример: Убираем границу между фреймами</h3> <ul><li>Попробуй сам »</li> </ul><table><tr><td style="width: 10px;background-color:green;color: white;"> frame_left </td> <td style="width: 90%;background-color:lime;color: white;"> frame_right </td> </tr></table><p> <!DOCTYPE html> <html><br><head><br><meta charset="UTF-8"> <title>Фреймы без границ</title> </head> <frameset cols="100,*" frameborder="0" framespacing="0" frameborder="no" border="0"> <frame src="frame_left.html" name=" frame_left" > <frame src="frame_right.html" name="frame_right" > </frameset> </html></p> <p>Если вы удалите границу между фреймами, посетители не смогут изменять размер фрейма в браузере. Вы можете также не допустить изменения размера фрейма, сохранив границы, используя атрибут <b>noresize </b>:</p><p> <frame src="frame_left.html" noresize> </p><p>С помощью атрибута <b>bordercolor </b> можно изменить цвет границы фрейма, необходимо только указать код или соответствующее зарезервированное имя цвета.<br> Ниже приведен пример html-страницы, которая содержит описанные выше атрибуты управления границей фрейма: цвет границы — красный, изменять размер верхнего фрейма нельзя:</p> <h3>Пример: Управление границей фреймов</h3> <ul><li>Попробуй сам »</li> </ul><table style="border-collapse:collapse;"><tr><td style="border-bottom: 4px solid red;background-color:blue;color: white;" colspan="2">frame_top</td> </tr><tr><td style="border-right: 4px solid red;width: 20%;background-color:green;color: white;">frame_left</td> <td style="width: 80%;background-color:lime;color: white;">frame_right</td> </tr></table><p> <!DOCTYPE html> <html><br><head><br><meta charset="UTF-8"> <title>Управление границей фреймов</title> </head> <frameset rows="150, *" border="10" bordercolor="red" frameborder="1" frameborder="yes"> <frame src="frame_top.html" noresize> <frameset cols="20%, 80%"> <frame src="frame_left.html"> <frame src="frame_right.html"> </frameset> </frameset> </html></p> <p>Если вы хотите расположить страницу, отображаемую внутри фрейма, ближе к его границам, или, наоборот, отодвинуть дальше, измените атрибуты <b>marginheight </b> и <b>marginwidth </b> тэга <b><frame> </b> . Атрибут <b>marginheight </b> определяет отступ между содержимым фрейма и его верхней и нижней границами. Синтаксис:</p><p> <frame marginheight="число"> </p><p>Атрибут <b>marginwidth </b> определяет отступ между содержимым фрейма и его правой и левой границами. Синтаксис:</p><p> <frame marginwidth="число"> </p><p>Данная строка html, например, располагает отображаемую страницу вплотную к границе фрейма:</p> <p>Если страница отображает нежелательную для вас полосу прокрутки, вы можете решить эту проблему, указав атрибут <b>scrolling </b>="no" в тэге <b><frame> </b> . Но учтите, что если фрейм будет недостаточно большим, чтобы отобразить все содержимое страницы, то у посетителя не будет никакой возможности прокрутить отображаемую страницу.</p> <h2>Ссылки внутри фреймов</h2> <p>Переход по ссылке в обычном HTML-документе осуществляется следующим образом: нажимаете ссылку и текущий документ заменяется новым в текущем либо в новом окне браузера. При использовании фреймов схема загрузки html-документов отличается от обычной и главное отличие — это возможность загружать html-документ в один фрейм из другого фрейма.<br> Для загрузки документа в определенный фрейм используется атрибут <b>target </b> тега <b><a> </b> . В качестве значения атрибута <b>target </b> используется имя фрейма, в который будет загружаться документ, указанный атрибутом <b>name </b> тега <b><frame> </b> . Стоит также отметить, что имя фрейма должно начинаться либо с цифры либо с латинской буквы. Следующие имена используются в качестве зарезервированных:</p> <p>Для внешних ссылок следует задавать в качестве значения для атрибута target либо _top , либо _blank , для того, чтобы сторонние проекты отображались не в ваших фреймах, а занимали полное окно браузера.</p> <p>В следующем примере изображен HTML-документ, в правый фрейм которого загружается страница по ссылке, помещенной в верхний фрейм. Ссылка на документ, который откроется в правом фрейме:</p><p> <a href="http://www.google.com" target="frame_right">Google</a> </p><p>Правому фрейму присваивается имя <i>frame_right </i>:</p><p> <frame src="frame_right.html" name="frame_right"> </p><p>Чтобы документ загружался в указанный фрейм, используется конструкция <i>target="frame_right" </i>, как показано в примере:</p> <h3>Пример: Ссылка на другой фрейм</h3> <ul><li>Попробуй сам »</li> </ul><p> <!DOCTYPE html> <html><br><head><br><meta charset="UTF-8"> <title>Ссылка на другой фрейм</title> </head> <frameset rows="100, *"> <frame src="frame_topic.html"> <frameset cols="20%, 80%"> <frame src="frame_left.html"> <frame src="frame_right.html" name="frame_right"> </frameset> <noframes> <p>Ваш браузер не отображает фреймы</p>

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

Элемент

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

В каждый фрейм в этом случае для наглядности загружен простой HTML документ, сообщающий номер фрейма и название файла, хранящего его содержимое. Если в фрейм будет загружен реальный документ, который не помещается полностью в нем, то у фрейма (внимание, не у всего окна!) появятся вертикальная и/или горизонтальная полосы прокрутки в зависимости от того, по горизонтали и/или по вертикали не помещается содержимое документа.
Например, дизайн и структура вашего сайта таковы, что есть одинаковые элементы, повторяющиеся на каждой странице сайта: название, навигационное меню, адрес в конце страницы или какие-то иные подобные элементы. Изменяется только содержание разделов. Тогда страницы можно разбить на части таким образом, чтобы неизменяемые части были помещены в отдельные фреймы, а еще один фрейм выделить для того, чтобы в него загружалось содержимое нужного раздела после щелчка на соответствующей ссылке, например, из меню.
Это дает экономию в скорости загрузки, так как одинаковые части страниц сайта повторно не загружаются, а просто все время отображаются в отведенных им фреймах.

Создание структуры фреймов элемент FRAMESET

Структура разбивки окна хранится в отдельном HTML документе, он и называется документом с фреймами. Структура фреймов формируется при помощи специального элемента FRAMESET. Обычный документ имеет один раздел HEAD и один раздел BODY, тогда как в документе с фреймами раздел BODY заменяется описанием структуры фреймов, Т.е. разделом FRAMESET.
В раздел FRAMESET может быть добавлен элемент NOFRAME с альтернативным содержанием для отображения в браузерах, не поддерживающих фреймы, или в браузерах с отключенной поддержкой фреймов. Такие браузеры просто не поймут структуры FRAMESET и NOFRAME, а отобразят помещенный внутри них текст.

Простой документ с фреймами</ТIТLЕ> </span> </HEAD> <FRAМESET > <span> ...описание структуры фреймов... </span> <NOFRAМES> <span> Альтернативное содержание для браузеров, не поддерживающих фреймы </span> </NOFRAМES> </FRAМESET> </HТМL> <p>Обратите внимание, что раздел BODY в документе отсутствует полностью, а элемент NOFRAMES содержится внутри раздела FRAMESET.<br> Сама структура фреймов формируется делением окна браузера на части — строки и колонки; В какой-то степени это похоже не создание таблиц. Для этого у элемента FRAMESET существуют атрибуты cols и rows, задающие деление на колонки и строки соответственно.<br> Единицы измерения, в которых можно задавать размеры фреймов, это, как обычно, пиксели и проценты. Есть еще возможность задавать размер в новой пока для нас единице измерения, которую условно можно назвать «часть» окна. Значения атрибутов cols и rows задаются перечислением размеров соответствующих областей через запятую. Можно комбинировать разные способы задания. Рассмотрим несколько примеров, исходя из предположения, что размер окна браузера 800х600 пикселей.</p> <FRAМESET rows= "50%, 50%"> </FRAМESET> <p>Такой код поделит окно по горизонтали на два одинаковых по высоте фрейма (строки). Если задать атрибут cols=» 50%, 50%», то получим две одинаковые по ширине колонки.</p> <span><FRAМESET cols= "120, 400. *"> </span> <span> . . . продолжение определения структуры фреймов. . . </span> </FRAМESET> <p>При таком коде получим три колонки фреймов: левая шириной 120 пикселей, средняя шириной 400 пикселей, а на третью колонку отводится все, что останется от первых двух колонок, в атрибуте это значение обозначается символом звездочки «*».</p> <FRAМESET cols= "1*, 4*"> <span> . . . продолжение определения структуры фреймов. . . </span> </FRAМESET> <p>Такой код создаст две колонки фреймов. Ширина первой принимается за единицу (это обозначается как 1 * или просто *), ширина второй в четыре раза больше. Таким образом, ширина первой будет 20%, а ширина второй 80% от общей ширины окна браузера.</p> <span><FRAМESET cols= "100, 40%, *"> </span> <span> . . . продолжение определения структуры фреймов... </span> </FRAМESET> <p>В приведенном мере комбинируются все три способа задания размеров. Ширина первой колонки будет равна 100 пикселей, для второй отводится 40% оставшейся ширины (800 — 100 = 700), и на третью остается все, что не занято первой и второй колонками.<br> Раздел FRAMESET может содержать вложенные разделы FRAMESET, что позволяет создать довольно сложную структуру фреймов. Допустим, нам надо разделить окно на 4 фрейма следующим образом:</p> <p><img src='https://i2.wp.com/samsebewebmaster.ru/wp-content/uploads/2016/06/Fr-1.jpg' align="center" width="100%" loading=lazy></p> <p>Сначала необходимо организовать 2 колонки таким образом:</p> cols= "100, * " <p>Затем вторую колонку поделить на три строки таким образом:</p> rows=" 80, *, 30" <p>Отдельный фрейм, точнее его описание, задается элементом FRAME и его атрибутами: подробнее о нем чуть позже. Вернемся к вложенным элементам FRAMESET. Рассмотрим пример кода, создающего такую структуру фреймов:</p> <FRAМESET cols= "100, * "> <span> <FRAМE name= "framel" src= "framel.html"> </span> <span> <FRAМESET rows= "80, *, 30"> </span> <span> <FRAМE name= "frame2" src= "frame2.html"> </span> <span> <FRAМE name= "frame3" src= "frame3.html"> </span> <span> <FRAМE name= "frame4" src= "frame4.html"> </span> </FRAМESET> </FRAМESET> <p>Каким образом разбивается окно на фреймы, вроде бы разобрались. При создании фреймов можно сделать так, чтобы границы между фреймами видно не было. Как вы, наверное, уже догадались, делается это при помощи атрибута border его значение должно равняться нулю. Но дело в том, что для фреймов этот атрибут не воспринимается браузером Internet Explorer, зато поддерживается браузером Netscape Navigator. Для Internet Explorer граница между фреймами задается атрибутом frameborder, который не поддерживается браузером Netscape Navigator. Получается, что необходимо задавать одинаковые значения для обоих атрибутов, чтобы оба браузера восприняли HTML код одинаково и толщина границ между фреймами была одинаковой.<br> Толщину границ или, по-другому, расстояние между фреймами также можно регулировать атрибутом framespacing, значение которого задается в пикселях. Все атрибуты элемента FRAMESET приведены в таблице.</p> <h2>Атрибуты элемента <FRAMESEТ></h2> <table cellspacing="1" cellpadding="15"><tbody><tr><td bgcolor="#E7E7E7" width="20%"> <h3>Атрибут</h3> </td> <td bgcolor="#E7E7E7" width="60%"> <h3>Описание</h3> </td> <td bgcolor="#E7E7E7" width="20%"> <h3>Пример</h3> </td> </tr></tbody></table><table cellspacing="1" cellpadding="15"><tbody><tr><td bgcolor="#E7E7E7" width="20%">rows </td> <td bgcolor="#E7E7E7" width="60%">Определяет количество и размеры горизонтальных фреймов (фреймов строк) в окне браузера. В качестве значения задается список размеров фреймов через запятую. Способы задания размеров: <p>а) в процентах от высоты рабочей области окна браузера например: "30%, 30%, 40%" ;</p> <p>б) в виде знака «*» (звездочка), говорящего о том, что фрейм занимает все свободное пространство окна браузера, незанятое другими фреймами с явно указанными размерами например, звездочка в записи "25%, 25%, *" равносильна 50%;</p> <p>в) в пикселях например: "75, *" .</p> <p>Все три способа можно совмещать.</p> </td> <td bgcolor="#E7E7E7" width="20%"> rows= "25%, 25%, *" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">cols </td> <td bgcolor="#E7E7E7" width="60%">Определяет количество и размеры вертикальных фреймов (фреймов столбцов) в окне браузера. В качестве значения<br> задается список размеров фреймов через запятую. Размеры задаются так же, как и в предыдущем параметре ROWS. </td> <td bgcolor="#E7E7E7" width="20%"> cols= "265, *" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">border </td> <td bgcolor="#E7E7E7" width="60%">Определяет ширину рамок фреймов в пикселях. Данный параметр действует только в браузерах Netscape. </td> <td bgcolor="#E7E7E7" width="20%"> Border= "0" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">frameborder </td> <td bgcolor="#E7E7E7" width="60%">Данный параметр действует только в браузерах lnternet Explorer и определяет наличие рамок у содержащихся внутри элемента FRAMESET фреймов. Возможные значения: Yes отображать рамки; No или 0 не отображать рамки. </td> <td bgcolor="#E7E7E7" width="20%"> Frameborder= "0" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">framespacing </td> <td bgcolor="#E7E7E7" width="60%">Определяет расстояние (так называемую «серую область») между фреймами в пикселях. Данный параметр также необходим для создания фреймов без рамок. </td> <td bgcolor="#E7E7E7" width="20%"> framespacing= "0" </td> </tr></tbody></table><p>Теперь вернемся к элементу FRAME, который описывает отдельный фрейм внутри всей структуры. Обязательный параметр для него — атрибут src, который задает URL HTML — документа или изображения для отображения в этом фрейме. Также лучше задать фрейму имя при помощи атрибута name. Это позволит использовать данное имя в качестве значения атрибута target элемента А и управлять тем, в какой фрейм должна загружаться ссылка. Имена фреймов не могут начинаться с цифр, в качестве начальных символов допустимы только буквы латинскою алфавита (az, AZ).</p> <p>Когда в структуре фреймов не задана рамка между фреймами, их содержимое может слишком плотно примыкать друг к другу, что будет не очень красиво выглядеть. Если хотите раздвинуть содержимое фреймов и при этом все-таки не включать отображение границ между ними, то это можно сделать, задав внутри фреймов отступы. Размер этих отступов задается в пикселях и попарно: для отступов сверху и снизу атрибутом marginheight,<br> а для отступов справа и слева атрибутом marginwidth. Тогда расстояние между содержимым соседних фреймов будет равно сумме соответствующих отступов этих фреймов.</p> <p>Должна ли отображаться рамка вокруг отдельною фрейма, определяется его атрибутом frameborder. Значение yes (или 1) говорит о том, что рамка должна быть, значение no (или 0) указывает, что рамки быть не должно.<br> Пользователь может изменять размер фреймов, созданный HTML документом. Для этого достаточно подвести курсор мыши к границе фреймов (неважно, видны эти границы или нет) и стандартным для операционной системы способом изменить размер окна.<br> В Windows курсор мыши примет вид двунаправленной черной стрелки. Нажав левую кнопку мыши, можно передвинуть границу окна. Аналогично можно изменить и размер фрейма, поскольку фрейм это тоже окно. Если вы рассчитали размеры своих фреймов и не хотите, чтобы пользователь менял их, задайте атрибут noresize. В результате изменение размеров будет запрещено.<br> Как мы уже говорили ранее, полосы прокрутки у фрейма появляются в том случае, если его содержимое в заданных его границах полностью не помещается. Наличие полос прокрутки регулируется атрибутом scrolling. Допустимы три значения yes, no и auto.<br> Значение auto соответствует автоматическому появлению полос прокрутки в тех случаях, когда это действительно необходимо. Если содержимое видно и так, полос прокрутки нет, если часть содержимого не помещается появляется нужная полоса прокрутки.<br> Значение yes включает обе полосы прокрутки независимо от того, нужны они или нет. Иногда это может выглядеть не очень красиво.<br> Значение no запрещает показывать полосы прокрутки совсем. Будьте осторожны с этим значением, поскольку при его указании можете лишить пользователя возможности увидеть все содержимое фрейма, Когда оно не помещается в нем полностью. Все атрибуты элемента FRAME приведены в таблице.</p> <h2>Атрибуты элемента <FRAME></h2> <table cellspacing="1" cellpadding="15"><tbody><tr><td bgcolor="#E7E7E7" width="20%"> <h3>Атрибут</h3> </td> <td bgcolor="#E7E7E7" width="60%"> <h3>Описание</h3> </td> <td bgcolor="#E7E7E7" width="20%"> <h3>Пример</h3> </td> </tr></tbody></table><table cellspacing="1" cellpadding="15"><tbody><tr><td bgcolor="#E7E7E7" width="20%">src </td> <td bgcolor="#E7E7E7" width="60%">Обязательный параметр. Указывает адрес (URL) HTL<br> файла, отображаемого в данном фрейме </td> <td bgcolor="#E7E7E7" width="20%"> src= "frame2 .html" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">name </td> <td bgcolor="#E7E7E7" width="60%">Определяет имя данного фрейма, которое будет в дальнейшем использоваться для ссылки на него из других документов с помощью атрибута target (см. элемент А). В качестве значения нужно указать любое имя без пробелов с использованием латинских символов и цифр<br> (начальными символами могут быть только буквы латинского алфавита: a-z, A-Z). Имя не должно начинаться с цифр и специальных символов. Зарезервированные имена фреймов начинаются со знака подчеркивания. </td> <td bgcolor="#E7E7E7" width="20%"> name= "menu1" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">marginwidth </td> <td bgcolor="#E7E7E7" width="60%">Определяет ширину (в пикселях) левого и правого полей фрейма. Если параметр не указан, браузер самостоятельно определит оптимальный размер отступа. </td> <td bgcolor="#E7E7E7" width="20%"> marginwidth= "0" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">marginheight </td> <td bgcolor="#E7E7E7" width="60%">Определяет ширину (в пикселях) верхнего и нижнего полей фрейма. Если параметр не указан, браузер самостоятельно определит оптимальный размер отступа. </td> <td bgcolor="#E7E7E7" width="20%"> marginheight= "0" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">scrolling </td> <td bgcolor="#E7E7E7" width="60%">Определяет наличие полос прокрутки содержимого фрейма. Возможные значения:<br> yes — отображать полосы прокрутки;<br> no — не отображать полосы прокрутки;<br> auto — отображать полосы прокрутки при необходимости (если документ, указанный в параметре SRC, не умещается во фрейме) </td> <td bgcolor="#E7E7E7" width="20%"> scrolling= "auto" </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">noresize </td> <td bgcolor="#E7E7E7" width="60%">Не позволяет изменять размеры фрейма. Данный параметр является флагом и не требует указания значения. </td> <td bgcolor="#E7E7E7" width="20%"> noresize </td> </tr><tr><td bgcolor="#E7E7E7" width="20%">frameborder </td> <td bgcolor="#E7E7E7" width="60%">Определяет наличие рамок у фрейма. Возможные значения:<br> yes или 1 — отображать рамки;<br> no или 0 — не отображать рамки. </td> <td bgcolor="#E7E7E7" width="20%"> frameborder= "0" </td> </tr></tbody></table> <p>Вертикальное расположение фреймов <br> Как сделать колонку фреймов из трех различных документов.</p> <p>Горизонтальное расположение фреймов <br> Как сделать строку фреймов из трех различных документов.</p> <p>(Вы найдете больше примеров внизу этой страницы).</p> <h2>HTML Фреймы</h2> <p>С помощью фреймов вы можете показать более одного HTML документа в том же окне браузера. Каждый HTML документ называется фреймом, и каждый фрейм является независимым от остальных.</p> <p>Недостатки в использовании фреймов:</p> <ul><li>Фреймы могут перестать поддерживаться в будущих версиях HTML</li> <li>Фреймы сложно использовать. (Печать старницы целиком затруднительна).</li> <li>Веб разработчик должен следить за большим количеством HTML документов.</li> </ul><h2>HTML Элемент frameset</h2><p>Элемент frameset содержит один или более элементов frame. Каждый элемент frame может содержать отдельный документ.</p> <p>Элемент frameset указывает СКОЛЬКО столбцов или строк будет в наборе фреймов, и СКОЛЬКО процентов/пикселей пространства будет занимать каждый фрейм.</p> <h2>HTML Элемент frame</h2><p>Тег <frame> определяет одно отдельное окно (фрейм) внутри набора фреймов (frameset).</p> <p>В пример ниже мы имеем набор фреймов с двумя столбцами.</p> <p>Первый столбец занимает 25% ширины окна браузера. Второй столбец занимает 75% ширины окна браузера. Документ "frame_a.htm" помещен в первый столбце, и документ "frame_b.htm" помещен во второй столбец:</p> <table class="code notranslate" cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td> <frameset cols="25%,75%"><br> <frame src="frame_a.htm" /><br> <frame src="frame_b.htm" /><br> </frameset> </td> </tr></table><p><b>Замечание: </b> Размер столбца в наборе фреймов может также быть указан в пикселях (cols="200,500"), и один из столбцов может использовать оставшееся пространство, для чего надо указать вместо ширины звездочку (cols="25%,*").<br></p> <p><b>Совет: </b> Если фрейм имеет видимые границы, пользователь может изменить его размер перетаскиванием границы. Чтобы запретить изменение размера фрейма таким способом, вы можете добавить noresize="noresize" в тег <frame>.</p> <p><b>Замечание: </b> Добавьте тег <noframes> для браузеров, которые не поддерживают фреймы.</p> <p><b>Важно: </b> Вы не можете использовать теги <body></body> вместе с тегами <frameset></frameset>! Однако, если вы добавите тег <noframes> содержащий некоторый текст для браузеров, которые не поддерживают фреймы, вы заключаете этот текст в теги <body></body>! Смотрите как это делается в первом примере ниже.</p> <table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td align="left" width="48"> </td> <td align="left" valign="middle"><h3>Еще примеры</h3> </td> </tr></table><p>Использование тега <noframes> <br> Как использовать тег <noframes> (для браузеров, которые не поддерживают фреймы).</p> <p>Вложенные наборы фреймов <br> Как создать вложенные наборы фреймов.</p> <p>Набор фреймов с атрибутом noresize="noresize" <br> Как использовать атрибут noresize. Переместите мышь на границу между фреймами и убедитесь, что не можете ее перетащить.</p> <p>Фрейм навигации <br> Как сделать фрейм навигации. Этот фрейм содержит список ссылок со вторым фреймом в качестве назначения, где будут открываться эти ссылки. Файл "tryhtml_contents.htm" содержит три ссылки. Исходный код ссылок:<br> <a href ="frame_a.htm" target ="showframe">Frame a</a><br><br> <a href ="frame_b.htm" target ="showframe">Frame b</a><br><br> <a href ="frame_c.htm" target ="showframe">Frame c</a><br> Второй фрейм показывает залинкованный документ.</p> <p>Переход к определенному разделу внутри фрейма <br> Два фрейма. Один из фреймов имеет ссылку на определенный раздел в файле. Этот раздел помечается как <a name="C10"> в файле "link.htm".</p> 31.01.17 3.5K <p>На многих современных сайтах присутствуют «прилипающие » меню навигации, которые отображаются либо в боковой панели, либо в верхней части, когда вы прокручиваете страницу вверх и вниз. Но свойства CSS , которые позволяют создавать «прилипающие » меню, не всегда поддерживается браузерами. Ранее для реализации подобного функционала использовались фреймы в HTML .</p> <h2>Разница между Frames и Iframes</h2> <p>При использовании frameset вы разделяете видимую часть окна браузера на несколько фреймов. Каждый фрейм имеет собственное содержимое, которое не затрагивает содержимое следующего. Frames и Iframes выполняют аналогичную функцию — встраивают ресурс в веб-страницу, но они принципиально отличаются друг от друга:</p> <ul><li>Frames — это элементы, определяющие макет;</li> <li>Iframes — элементы, добавляющие контент.</li> </ul><h3>История и будущее фреймов</h3> <p>W3C признала фреймы устаревшими </span> в HTML5 . Данное решение было аргументировано тем, что фреймы HTML отрицательно сказываются на юзабилити и доступности. Давайте разберемся, обоснованы ли эти претензии.</p> <h3>Проблемы с фреймами</h3> <ul><li><span>Проблемы юзабилити: </span> с увеличением популярности мобильных устройств с небольшими экранами возникла необходимость того, чтобы сайты предлагали пользователям несколько представлений, которые изменяются в зависимости от размера окна просмотра. Хотя фреймами можно манипулировать, чтобы обеспечить определенную степень адаптивности, но они не слишком хорошо подходят для создания адаптивных сайтов;</li> <li>Доступность: экранные дикторы и другие вспомогательные технологии довольно плохо считывают и взаимодействуют с сайтами, которые используют фреймы.</li> </ul><p>В данный момент в веб-разработке прослеживается глобальная тенденция разделения содержимого веб-страницы от ее представления:</p> <ul><li>Содержимое должно добавляться и определяться разметкой, например, через HTML ;</li> <li>Представление определяется языками, такими как CSS и JavaScript .</li> </ul><p>Использование фреймов изначально предполагает создание специфического внешнего вида и структуры, в то время как задачи представления должны обрабатываться с помощью CSS .</p> <h3>Будущее фреймов</h3> <p>Хотя на сегодняшний день все современные браузеры поддерживают фреймы, <span>W3C однозначно заявила </span>, что фреймы «<span>не должны использоваться веб-разработчиками </span>«. Если у вас есть сайт, который использует фреймы, вам стоит задуматься о переходе на другие технологии. В какой-то момент браузеры перестанут поддерживать фреймы, и, когда это произойдет, сайты, применяющие их, станут непригодными для использования.</p> <h3>Как сделать фреймы в HTML</h3> <p>В разработке новых сайтов фреймы использоваться не должны, но для веб-мастеров, которые занимаются поддержкой старых ресурсов, умение применять их может оказаться полезным.</p> <h3>Основная концепция фреймов</h3> <p>Основная концепция фреймов довольно проста:</p> <ul><li>Используйте элемент frameset в определенном месте элемента <span>body в HTML-документе </span>;</li> <li>Используйте элемент frame , чтобы создать фреймы для содержимого веб-страницы;</li> <li>Используйте атрибут src для идентификации ресурса, который должен загружаться внутри фрейма;</li> <li>Создайте для каждого фрейма HTML отдельный файл с содержимым.</li> </ul><p>Рассмотрим несколько примеров того, как это работает. Сначала нужно создать несколько HTML-документов , с которыми мы будем работать. Давайте создадим четыре различных HTML-документа . Вот, что будет содержать первый из них:</p> <p><!DOCTYPE html> <html> <body> <h1>Frame 1</h1> <p>Contents of Frame 1</p> </body> </html></p> <p>Первый документ мы сохраним, как frame_1.html . Остальные три документа будет иметь подобное содержимое, и называться соответственно.</p> <h3>Создание вертикальных столбцов</h3> <p>Чтобы создать набор из четырех вертикальных столбцов, нужно использовать элемент frameset с атрибутом cols . Атрибут cols используется для определения количества и размера столбцов, которые будет содержать frameset . В нашем случае у нас есть четыре файла для отображения. Следовательно, нам нужно четыре фрейма.</p> <p>Чтобы их создать, нам нужно задать в атрибуте cols четыре значения, разделенные запятой. Для простоты мы присвоим каждому из фреймов значение * , это задаст для них размер, при котором они автоматически будут заполнять все свободное пространство. Вот, как будет выглядеть наша HTML-разметка :</p> <p><!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></p> <p>А вот как эта разметка будет отображаться:<br></p> <h3>Создание горизонтальных строк</h3> <p>Строки фреймов HTML можно создать с помощью атрибута rows , а не атрибута cols , как в предыдущем примере:</p> <p><!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></p> <p>Внеся это изменение, мы сделали так, что фреймы теперь загружаются в четыре ряда, друг над другом:<br></p><p><img src='https://i1.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/rows-150855.jpg' width="100%" loading=lazy></p> <h3>Объединение столбцов и строк</h3> <p>Столбцы и строки фреймов могут одновременно отображаться на той же странице. Можно вкладывать один фрейм внутрь другого. Для этого мы сначала создаем frameset , а затем вкладываем дочерний frameset внутрь родительского элемента. Вот пример того, как можно вложить две строки в набор из трех столбцов:</p> <p>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></p> <p>Фрейм в HTML пример:<br></p><p><img src='https://i0.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/mixedframes-150853.jpg' width="100%" loading=lazy></p><br> Вложенный frameset располагается внутри родительского элемента, первого фрейма. Вложенный элемент может быть размещен в любом месте. Например, если мы хотим, чтобы вложенный элемент размещался в центре, то просто переставляем элементы следующим образом: <p><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></p> <p>Вот, как теперь будут отображаться фреймы:<br></p><p><img src='https://i0.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/mixedmiddleframes-150853.jpg' width="100%" loading=lazy></p><br> Можно создать другие вложенные фреймы: <p><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></p> <p>Этот код создает набор из двух одинаковых по размеру столбцов. Затем мы разделили второй столбец на две строки. И, наконец, мы разделили вторую строку на две колонки. Вот, как это будет выглядеть:<br></p><p><img src='https://i1.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/threelayersframes-150852.jpg' width="100%" loading=lazy></p><br> Другой способ создать комбинацию строк и столбцов — определить сетку столбцов и строк в одном фрейме. Например, если вы хотите создать сетку из четырех фреймов одинакового размера, можно использовать следующий код: <p><frameset rows="*,*" cols="*,*"> <frame src="frame_1.html"> <frame src="frame_2.html"> <frame src="frame_3.html"> <frame src="frame_4.html"> </frameset></p> <p>Полученная сетка строк и столбцов будет выглядеть следующим образом:<br></p><p><img src='https://i0.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/framegrid-150852.jpg' width="100%" loading=lazy></p> <h3>Как задавать стили для фреймов</h3> <p>Когда речь идет об определении стилей веб-страницы, которая использует фреймы в HTML , существуют два способа назначения стилей:</p> <ul><li>Определение стилей внутри каждого frame ;</li> <li>Определение стилей для frameset .</li> </ul><p>Представление каждого frame должно определяться внутри исходного документа. Представление frameset должно определяться внутри родительского документа, содержащего frameset . Другими словами, стили для frame_1.html должны задаваться правилами CSS , содержащимися в файле frame_1.html , или в таблице стилей, связанной с файлом frame_1.html .</p> <h3>Определение стилей фреймов в исходном документе</h3> <p>Как и для любой веб-страницы, стили для содержимого каждого фрейма могут задаваться с помощью CSS . Чтобы задать стили содержимого каждого фрейма, они должны быть добавлены к основному документу либо через ссылку на внешний файл стилей, либо через добавление внутренних или встроенных стилей. Принимая во внимание то, что у нас есть четыре исходных документа, стили CSS должны применяться к каждому документу отдельно.</p> <p>Применив стили CSS к веб-странице, которая содержит frameset , мы не сможем применить стили к каждому фрейму отдельно. Если мы хотим задать стили для frame_1.html , нам нужно добавить эти стили непосредственно в сам документ. Вот пример того, как это можно сделать:</p> <p><!DOCTYPE html> <html> <head> <style> body {background: gray;} h1 {color: blue;} p {margin: 20px;} </style> </head> <body> <h1>Frame 1</h1> <p>Contents of Frame 1</p> </body> </html></p> <p>Если мы вернемся к нашему предыдущему примеру создания фреймов в HTML с четырьмя столбцами одинакового размера и загрузим frameset после внесения этих изменений в файл frame_1.html , мы получим следующее:<br></p><p><img src='https://i2.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/stylesonframe1-150850.jpg' width="100%" loading=lazy></p> <h3>Определение стилей и форматирование frameset</h3> <p>Как повлиять на представление frameset помимо определения стилей самих документов:</p> <ul><li>Может быть определен или зафиксирован размер каждого фрейма;</li> <li>Может быть изменен отступ между фреймами;</li> <li>Может быть задан формат рамки вокруг каждого фрейма.</li> </ul><p>Эти изменения вносятся не через CSS . Они осуществляются путем добавления атрибутов и их значений для элемента frame .</p> <h3>Определение размеров фреймов</h3> <p>Размеры фреймов могут задаваться в пикселях, процентах, либо фреймы могут автоматически занимать все свободное пространство. Чтобы указать размер фрейма, вставьте нужное значение в атрибут cols или rows . По умолчанию, если для фрейма не указан атрибут noresize , посетители сайта могут с помощью мыши перетащить границу между двумя фреймами, изменяя их размер. Если это нежелательно, то к элементу фрейма может быть применен атрибут noresize , и изменение его размеров будет невозможно. Объединим обе эти концепции на практике.</p> <p>Мы создадим следующий макет:</p> <ul><li>Один ряд на всю ширину вдоль верхней части страницы;</li> <li>Три столбца ниже верхнего ряда;</li> <li>Размеры первого и третьего столбца задаются так, чтобы создать левый и правый сайдбары;</li> <li>Размеры среднего столбца задаются так, чтобы он представлял собой большую область контента.</li> </ul><p>Мы можем создать фрейм HTML с помощью следующего кода:</p> <p><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></p> <p>Этот код создает frameset из двух рядов:</p> <ul><li>Первый ряд высотой 150 пикселей. Атрибут noresize , указанный для первого frame означает, что его размеры не могут быть изменены;</li> <li>Стили, которые мы применяли ранее к frame_1.html сохраняются, но они влияют только на содержимое этого фрейма;</li> <li>Второй ряд расширяется, чтобы заполнить оставшееся пространство;</li> <li>Второй frameset вложен во второй ряд и содержит три столбца;</li> <li>Первый и третий столбцы заполняют по 20% доступного пространства окна браузера;</li> <li>Второй столбец расширяется таким образом, чтобы заполнить пространство, остающееся между первым и третьим столбцом;</li> <li>Так как мы не указали для столбцов атрибут noresize , изначально они будут отображаться, исходя из размеров, заданных в коде.</li> </ul><p>Но посетитель сайта сможет вручную изменить их размеры.</p> <p>Этот код создает веб-страницу, отображаемую следующим образом:<br></p><p><img src='https://i1.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/sizedframes-150847.jpg' width="100%" loading=lazy></p> <h3>Форматирование рамки и отступов вокруг фрейма</h3> <p>Теперь, когда мы определили макет, если нам нужно, мы можем увеличить или уменьшить отступы между фреймами, а также удалить рамку между ними. Используя макет, который мы создали в предыдущем пункте, давайте удалим рамки между тремя столбцами, но оставим рамку между верхними и нижними рядами. Давайте также добавим отступ вокруг содержимого первого фрейма HTML :</p> <p><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></p> <p>Атрибут marginheight , примененный к первому фрейму, добавляет отступ в 15 пикселей выше и ниже содержимого, загружаемого в первом фрейме. Значение frameborder , равное 0, удаляет рамки для всех трех нижних фреймов. Вот как это будет выглядеть:<br></p><p><img src='https://i1.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/bordersandmargins-150846.jpg' width="100%" loading=lazy></p> <h3>Указание фреймов с помощью ссылок</h3> <p>Одним из наиболее распространенных случаев использования фреймов является создание во фрейме «прилипающего » меню навигации, которое всегда видно независимо от положения содержимого других фреймов. При правильном применении, ссылки в меню навигации приводят к загрузке новых ресурсов во фрейме, в то время как остальные фреймы остаются статическими.</p> <p>Можно отформатировать анкоры для указания конкретных фреймов через присвоение нужному элементу frame атрибута name и использование атрибута target внутри элемента a для загрузки href в указанном фрейме. Если все это немного сбивает вас с толку, давайте разберем процесс создания фреймов в HTML шаг за шагом.</p> <p>Первым делом нам нужно присвоить name для фрейма, в котором должны открываться ссылки. В разметке, которую мы создали чуть ранее, можно использовать левый столбец для меню навигации, а центральный столбец в качестве целевого фрейма. Для этого нужно присвоить атрибут name целевому элементу:</p> <p><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></p> <p>Теперь, когда мы задали для центрального столбца name=»mid_col» , можно создать в исходном документе нашего левого столбца frame_2.html несколько ссылок:</p> <p><!DOCTYPE html> <html> <body> <h1>Frame 2</h1> <p>Contents of Frame 2</p> <ul> <li>Load frame_1.html</li> <li>Load frame_2.html</li> <li>Load frame_3.html</li> <li>Load frame_4.html</li> </ul> </body> </html></p> <p>Теперь, когда мы загрузим веб-страницу, в левой боковой панели будут размещаться четыре ссылки навигации. При нажатии на ссылку содержимое файла загружается во фрейме среднего столбца с атрибутом name=»mid_col» . Вот, что мы увидим при загрузке страницы:<br></p><p><img src='https://i2.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/links-150844.jpg' width="100%" loading=lazy></p><br> Если нажмем ссылку Load frame_1.html , содержимое этого файла загрузится в центральном столбце, и мы получим следующее:<br><p><img src='https://i1.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/linksframe1-150844.jpg' width="100%" loading=lazy></p><br> Если нажмем ссылку Load frame_2.html , то увидим, что и в левой боковой панели, и в центральном столбце будут отображаться ссылки навигации:<br><p><img src='https://i1.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/linksframe2-150842.jpg' width="100%" loading=lazy></p><br> При нажатии ссылок Load frame_3.html и Load frame_4.html в центральном столбце будет загружаться содержимое этих файлов. Если бы мы забыли добавить для одной из ссылок атрибут target=»mid_col» , то при клике по ней файл будет загружаться в том фрейме, который содержит ссылку. Если мы хотим перезагрузить всю страницу, например, при переходе по ссылке на внешний сайт, нам нужно добавить атрибут target=»_blank» или target=»_top» . <h3>Предоставление резервного варианта noframes</h3> <p>В прошлом элемент noframes использовался, чтобы создать резервный вариант для браузеров, которые не поддерживают фреймы HTML . На текущий момент все современные браузеры поддерживают фреймы, а noframes практически не поддерживается. В результате нам больше не нужно создавать резервный вариант noframes при работе с фреймами.</p> <h3>Как сделать фреймы адаптивными</h3> <p>При применении фреймов довольно сложно обеспечить удобство использования для посетителей, заходящих на сайт со смартфонов и небольших планшетов. Так как фреймы были полностью удалены из HTML5 и считаются устаревшими, важно, чтобы владельцы сайтов, созданных с использованием фреймов, запланировали перестройку своих ресурсов и переход на другие технологии.</p> <h3>Использование строк, а не столбцов</h3> <p>Если это возможно, организуйте фреймы в ряды, а не столбцы. На маленьком экране гораздо легче перемещаться по контенту по вертикали, чем по горизонтали. Фреймы в HTML , которые расположены в ряд, намного проще просматривать на небольшом экране. Если мы уменьшим ширину макетов, содержащих строки и столбцы, имитируя экран Apple IPhone 6 , то увидим, что строки намного удобнее просматривать, чем столбцы:<br></p><p><img src='https://i0.wp.com/internet-technologies.ru/wp-content/uploads/articles/201702/compared-150841.jpg' width="100%" loading=lazy></p> <h3>Используйте проценты для ширины столбцов</h3> <p>Когда размеры столбцов задаются в процентах, а не в пикселях, они будут автоматически изменяться в зависимости от размера экрана устройства. Хотя это может создать определенные проблемы, связанные с тем, что некоторые фреймы могут стать слишком маленькими, но в целом опыт взаимодействия и просмотра будет лучше, если общая ширина столбцов задается в процентах, а не в пикселях.</p> <h3>Как перейти с фреймов на другие технологии</h3> <p>И элемент frameset , и элемент frame были удалены из последней спецификации HTML5 . Владельцы сайтов, созданных с использованием фреймов, должны выполнить перестройку своих ресурсов, чтобы исключить их из макета. В какой-то момент браузеры откажутся от поддержки фреймов. Таким образом отказаться от фреймов — это не просто желательно, это необходимо сделать.</p> <h3>Оценка контента, содержащегося во фреймах</h3> <p>Первым шагом к реорганизации сайта, использующего плавающие фреймы HTML , должно стать определение причин, по которым используются именно фреймы:</p> <ul><li>Были ли фреймы использованы для создания конкретного макета? Если это так, для создания подобного макета может быть использован CSS ;</li> <li>Были ли фреймы использованы для создания контейнера с рекламой определенных размеров? Есть много способов воссоздать данный эффект с помощью CSS или виджетов, предназначенных для работы с CMS ;</li> <li>Были ли фреймы использованы для создания «прилипающих » меню навигации? Опять же, с помощью CSS может быть воссоздан тот же эффект;</li> <li>Были ли фреймы использованы для загрузки контента с внешнего сайта? Если да, то элемент iframe, который является частью HTML5 , может быть использован для встраивания контента с внешнего сайта.</li> </ul><p>Практически в каждом случае можно использовать CSS , чтобы воссоздать макет, разработанный с применением фреймов, а iframe можно использовать для встраивания внешних ресурсов.</p> <h3>Стратегия для вашего нового сайта</h3> <p>Если ваш сайт создан с применением фреймов, существует большая вероятность того, что он уже сильно устарел. Вместо того чтобы просто собрать все содержимое сайта в один HTML-файл и задать для него стили с помощью CSS , возможно, пришло время подумать о модернизации и переходе на систему управления контентом.</p> <p>Переход на CMS на начальном этапе потребует больше времени, но в долгосрочной перспективе преимущества от запуска современного сайта перевесят краткосрочные сложности. Чтобы помочь вам определиться с системой управления контентом, рекомендуем обратить внимание на три самые популярные из них:</p> <ul><li>WordPress ;</li> <li>Joomla! ;</li> <li>Drupal .</li> </ul><h3>Дополнительные ресурсы</h3> <p>Если вы хотите узнать о фреймах HTML больше, лучшим источником для получения дополнительной информации является World Wide Web Consortium (<span>W3C </span>). Вот некоторые из страниц с информацией о фреймах:</p> <ul><li><span>Документация HTML4 о фреймах </span>;</li> <li><span>Устаревшие функции HTML5 </span></li> </ul><h3>Связанные элементы</h3> <table border="1"><tbody><tr><td><span>Название элемента </span> </td> <td>Атрибуты </td> <td>Описание </td> </tr><tr><td>noframes </td> <td> </td> <td>Элемент <noframes> использовался внутри родительского <frameset>, чтобы предоставить резервный вариант контента для пользователей, чьи браузеры, не поддерживали <frame>. На данный момент фреймы являются устаревшей технологией, поэтому элемент <noframes> не должен использоваться. </td> </tr><tr><td>iframe </td> <td>sandbox </td> <td><iframe> создает встроенный фрейм, который выводит в текущий документ независимый HTML-документ. </td> </tr><tr><td>frameset </td> <td>frameborder </td> <td>Элемент <frameset> использовался, чтобы создать группу фреймов, которые могут управляться и стилизоваться, как одно целое. На данный момент фреймы в HTML устарели и не должны использоваться. </td> </tr><tr><td>frame </td> <td>Src </td> <td>Элемент <frame> использовался, чтобы разбить окно браузера на несколько независимых частей. На данный момент фреймы устарели и не должны использоваться. </td> </tr></tbody></table><p>Данная публикация представляет собой перевод статьи «Frames » , подготовленной дружной командой проекта </p><p>Хорошо Плохо </p> <p>Всем доброго времени суток! С Вами Бернацкий Андрей.</p> <p>Прежде, чем перейти непосредственно к статье, я Вам хочу дать ссылку на видео-версию данной темы:</p> <p>В этом выпуске мы поговорим о <b>фреймах в HTML </b>. <b>Фреймы </b> по своей сути очень похожи на таблицы, но в отличие от таблиц, каждый фрейм независим и в каждом из них может быть отдельная web страница со своим адресом.</p> <p><img src='https://i2.wp.com/webformyself.com/wp-content/uploads/2009/06/frame1.jpg' align="center" width="100%" loading=lazy></p> <p>На рисунке видим достаточно распространенную структуру сайта. Ее можно представить в виде таблицы, а можно все это сделать при помощи фреймов. В верхний фрейм можно загрузить страницу с логотипом и меню, в левый – страницу с навигацией по сайту, в центральном фрейме будет страница с основным содержимым сайта, в правый фрейм загрузим страницу с рекламными баннерами, а в нижний – страницу с контактной информацией. Вот вкратце что такое фреймы.</p> <p>Теперь рассмотрим, как это все можно осуществить.</p> <p>Особенностью документа, содержащего фреймы, является то, что он не содержит контейнера <b>BODY </b>. Вместо него используется контейнер <b>FRAMESET </b>. Общий синтаксис фреймов выглядит следующим образом:</p> <p>XHTML </p> <p><html> <head>…</head> <frameset>….</frameset> </html></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p><html> </p><p><head> … </head> </p><p><frameset> …. </frameset> </p><p></html> </p> </td> </tr></table><p>В контейнере <b><frameset>….</frameset> </b> располагаются теги <b><frame /> </b>, которые определяют содержимое фреймов.</p> <p>У тега <b><frameset> </b> есть два параметра:</p> <p><b>rows = число </b> – количество строк (горизонтальных подокон).</p> <p><b>cols = число </b> – количество столбцов (вертикальных подокон).</p> <p>Вообще говоря, значение параметров rows и cols задаются не совсем числами, а перечислением чисел через запятую. Сколько будет идти чисел, столько строк или столбцов и будет, а числа определяют размер фрейма. Главное, чтоб сумма этих чисел составляла всю ширину экрана.</p> <p>Давайте, разберем это на примере, и все будет понятно. Сейчас создадим фреймовый документ следующего вида:</p> <p><img src='https://i1.wp.com/webformyself.com/wp-content/uploads/2009/06/frame2.jpg' align="center" width="100%" loading=lazy></p> <p>Код, который определит нам такую структуру фрейма, будет выглядеть так:</p> <p>XHTML </p> <p><frameset cols="30%,*,30%"> <frame src="../Урок 13/index.html" /> <frame src="http://www.mail.ru" /> <frame src="../Урок11/index.html" /> </frameset></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p><frameset cols = "30%,*,30%" > </p><p><frame src = "../Урок 13/index.html" /> </p><p><frame src = "//www.mail.ru" /> </p><p><frame src = "../Урок11/index.html" /> </p><p></frameset> </p> </td> </tr></table><p>В первой строке приведенного кода открывается контейнер frameset, в параметре cols указано, что будет три вложенных фрейма. У первого ширина будет 30% от всей ширины экрана. У третьего ширина будет тоже 30% от всей ширины экрана. А второй фрейм займет все оставшееся место. Да символ <b>"*" </b>(звездочка) означает занять все оставшееся место на экране.</p> <p>Кстати, рассмотрим, каким образом фреймам можно задавать размеры в параметрах cols и rows:</p> <p>Можно задать размер, поставив просто число. Это число, будет определять размер фрейма в пикселях.</p> <p>Можно задать значение ширины в процентах. Причем, если сумма процентов всех колонок будет превышать 100%, то все фреймы пропорционально уменьшаться, что бы общая сумма было равна 100%. Аналогично ситуация будет, если сумма процентов всех колонок будет менее 100%, то все фреймы пропорционально увеличатся, что бы общая сумма было равна 100%.</p> <p>Можно задавать размер фрейма символом<b> “*” </b> (звездочка). Это означает, что фрейм должен занять все оставшееся место. Если будет указано, например <b><frameset cols="20%,*,*"> </b>, то есть две звездочки, то все оставшееся место будет поровну разделено между этими двумя фреймами (в данном случае по 40%).</p> <p>Можно комбинировать варианты задания размеров фреймов в HTML. Например:</p> <p>XHTML </p> <p><frameset cols="70,*,40%"></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p><frameset cols = "70,*,40%" > </p> </td> </tr></table><p>Этот код означает, что у первого фрейма размер будет 70 пикселей, у третьего 40% ширины экрана, а второй займет все оставшееся место.</p> <p>С первой строкой кода разобрались полностью. Идем дальше.</p> <p>Далее следуют теги <b><frame src="url" /> </b>. Поскольку через запятую в параметре <b>cols </b>тега <b>frameset </b> задано три числа (то есть будет три фрейма), то и тегов <b><frame /> </b> должно быть тоже три. Значением параметра src является адрес web страницы, которая будет загружаться в данный фрейм. Адрес, как видно из примера, может быть абсолютным и относительным.</p> <p>И в последней строке закрывается контейнер <b></frameset> </b>.</p> <p>Если заменить в первой строке кода параметр cols на rows, то мы получим такой же фреймовый документ, состоящий из трех фреймов. Только разбиение на фреймы будет идти по вертикали.</p> <p>XHTML </p> <p><frameset rows="30%,*,30%"> <frame src="../Урок 13/index.html" /> <frame src="../Урок 12/index.html" /> <frame src="../Урок 11/index.html" /> </frameset></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p><frameset rows = "30%,*,30%" > </p><p><frame src = "../Урок 13/index.html" /> </p><p><frame src = "../Урок 12/index.html" /> </p><p><frame src = "../Урок 11/index.html" /> </p><p></frameset> </p> </td> </tr></table><p>Параметры <b>rows </b> и <b>cols </b>одновременно использовать нельзя. Это приводит к ошибкам, и неверному отображению содержимого.</p> <p>У всех сейчас возник вопрос о том, как создать такую структуру, о которой я говорил в самом начале статьи. К этому вернемся чуть позже, а пока обратимся к тому, что у нас сейчас происходит в браузере.</p> <p>В браузере мы видим три страницы, каждая из которых находится в своем фрейме.</p> <p>При этом мы, наведя курсор мыши к границам фреймов, можем изменять размеры фреймов, так же видны полосы прокрутки и границы между фреймами. Это не всегда нужно, даже скорее совсем не нужно. А всем этим можно управлять благодаря параметрам тегов <b>frame </b> и <b>frameset </b>.</p> <p>Параметры тегов <b>frame </b> и <b>frameset </b>:</p> <p><b>src ="url" </b> – обязательный параметр. Указывает адрес страницы, которая будет отображена внутри фрейма. Используется только для frame.</p> <p><b>noresize </b> – отменяет возможность изменения размеров. Используется только для <b>frame </b>.</p> <p><b>scrolling="yes/no/auto" </b> – определяет наличие полос прокрутки. Значение yes – указывает на присутствие полос прокрутки. Значение no – указывает, что полос прокрутки не будет. При значение auto – браузер сам определяет, будут ли полоски прокрутки. Используется только для <b>frame </b>.</p> <p><b>name="frame-name" </b> – имя фрейма. Данный параметр используется для взаимодействия между фреймами. Подробнее о нем поговорим чуть позже. Используется только для <b>frame </b>.</p> <p><b>border=число </b> – толщина границ между фреймами. Если принимает значение 0, то границы между фреймами не отображаются. Используется только для frameset.</p> <p><b>framespacing="число" </b> – расстояние между фреймами. Используется только для frameset.</p> <p>Используя эти параметры, можно получить страницу, у которой не отображаются границы между фреймами, нет возможности изменять размеры фреймов и у двух последних фреймов запретим скроллинг. Код такой страницы выглядит следующим образом:</p> <p>XHTML </p> <p><frameset cols="30%,*,30%" border="0"> <frame src="../Урок 13/index.html" noresize="noresize” /> <frame src="../Урок 12/index.html" noresize="noresize" scrolling="no" /> <frame src="../Урок11/index.html" noresize="noresize" scrolling="no" /> </frameset></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p><frameset cols = "30%,*,30%" border = "0" > </p><p><frame src = "../Урок 13/index.html" noresize = "noresize” /> </p><p><frame src=" . . / Урок12/ index. html" noresize=" noresize" scrolling=" no" /> </p><p><frame src=" . . / Урок11/ index. html" noresize=" noresize" scrolling=" no" /> </p><p></frameset> </p> </td> </tr></table><p>Есть еще несколько параметров, но они не однозначно работают, поэтому я считаю целесообразным их даже не упоминать в выпуске.</p> <p>Пожалуй, с параметрами все. Рассмотрели на примере как их применять.</p> <p>Теперь создадим фреймовую структуру, о которой я говорил в самом начале выпуска.</p> <p>Для этого, создаем структуру из трех фреймов с разбиением по вертикали.</p> <p>XHTML </p> <p><frameset rows="100,*,70" border="0"></p> <p>Соответственно, вместо тега <b><frame /> </b>, мы должны вставить еще один контейнер <b><frameset> </b>..<b></frameset> </b> с тремя столбцами, и в каждый записать свой адрес страницы. Видите, ничего сложного, мы просто вместо тега <b><frame /> </b> вставляем новый, нужный нам, контейнер <b><frameset> </b>..<b></frameset> </b>.</p> <p>XHTML </p> <p><frameset cols="20%,*,20%"> <frame src="../урок 7/lesson7.html" /> <frame src="../урок3/Untitled-1.html" /> <frame src="../урок1/lesson1.html" /> </frameset></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p><frameset cols = "20%,*,20%" > </p><p><frame src = "../урок 7/lesson7.html" /> </p><p><frame src = <span>"../урок3/Untitled-1.html" </span> /> </p><p><frame src = "../урок1/lesson1.html" /> </p><p></frameset> </p> </td> </tr></table><p>После этого вставляем наш третий фрейм с контактной информацией и закрываем главный контейнер <b></frameset> </b></p> <p>XHTML </p> <p><frame src="../Урок11/index.html" noresize="noresize" scrolling="no" /> </frameset></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p><frame src = "../Урок11/index.html" noresize = "noresize" scrolling = "no" /> </p><p></frameset> </p> </td> </tr></table><p>Полный код данной страницы приведен ниже:</p> <p>XHTML </p> <p><frameset rows="100,*,70" border="0"> <frame src="../Урок 13/index.html" noresize="noresize" /> <frameset cols="20%,*,20%"> <frame src="../урок 7/lesson7.html" /> <frame src="../урок3/Untitled-1.html" /> <frame src="../урок1/lesson1.html" /> </frameset> <frame src="../Урок11/index.html" noresize="noresize" scrolling="no" /> </frameset></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p><frameset rows = "100,*,70" border = "0" > </p><p><frame src = "../Урок 13/index.html" noresize = "noresize" /> </p><p><frameset cols = "20%,*,20%" > </p><p><frame src = "../урок 7/lesson7.html" /> </p><p><frame src = <span>"../урок3/Untitled-1.html" </span> /> </p><p><frame src = "../урок1/lesson1.html" /> </p><p></frameset> </p><p><frame src = "../Урок11/index.html" noresize = "noresize" scrolling = "no" /> </p><p></frameset> </p> </td> </tr></table><p>Конечно, адреса для фреймов я взял из предыдущих выпусков рассылки, и никакого меню, логотипа, навигации и так далее мы тут не увидели. Но структуру такую как нужно мы получили. Но если создать реальные нужные страницы, то можно получить красивую структуру.</p> <p>Что мы получили в итоге. Чем это удобно или неудобно (решать вам), но при фреймовой структуре, всегда все наши фреймы остаются на странице. Независимо от величины содержимого у нас всегда будет виден логотип и меню сайта, нижняя часть сайта контактной информацией, блок навигации и баннеры. Вот, в общем-то, суть и смысл фреймов.</p> <p>Существует возможность взаимодействия между фреймами. Можно сделать так, чтобы нажав на ссылку в одном фрейме, информация появилась в другом. Сейчас мы посмотрим, как это делается.</p> <p>Создадим фрейм следующего вида:</p> <p><img src='https://i0.wp.com/webformyself.com/wp-content/uploads/2009/06/frame3.jpg' align="center" width="100%" loading=lazy></p> <p>В левом фрейме, будут располагаться наши ссылки. А в правом – страницы на которые ведут эти ссылки.</p> <p>Создаем такой фрейм:</p> <p>XHTML </p> <p><frameset cols="100,*" border="0"> <frame src="ind2.html" noresize="noresize" /> <frame src="ind3.html" name="fram1" /> </frameset></p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"></td></tr></table> <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> <div class="mb40 pr"> <div style="margin-top: 30px; margin-bottom: 35px;"> </div> <div style="margin-top: 0px; margin-bottom: 0px; font-family: Arial; font-size: 15px;"> <div id="yandex_rtb_R-A-105632-3"></div> </div> </div> <style> .sh_icon a:hover { opacity: 0.6; } </style> <div class="catTitle"> <span class="fl noLinknew">Похожие статьи</span> <div class="clr"></div> </div> <ul class="medbeArticle medbeEvents js-novinki "> <li id="bx_3218110189_16277"> <div class="info" style="position:relative;"> <a href="/kak-vyglyadit-samsung-not-8-samsung-galaxy-note8-sd835---tehnicheskie-harakteristiki/" class="date">2024-05-10 00:25:16</a> </div> <a href="/kak-vyglyadit-samsung-not-8-samsung-galaxy-note8-sd835---tehnicheskie-harakteristiki/"> <div class="title"> Samsung Galaxy Note8 SD835 - Технические характеристики </div> </a> <p class="text"> Информация о марке, модели и альтернативных названиях конкретного устройства, если таковые имеются. ДизайнИнформация о размерах и весе устройства, представленная в разных единицах измерения. Использованные материалы, предлагаемые цвета,... </p> <a href="/category/computer-literacy/" class="catName">Компьютерная грамотность</a> <div class="clr"></div> </li> <li id="bx_3218110189_16277"> <div class="info" style="position:relative;"> <a href="/notepad-skachat-russkii-poslednyaya-versiya-besplatnye-programmy-dlya-windows/" class="date">2024-05-09 00:25:26</a> </div> <a href="/notepad-skachat-russkii-poslednyaya-versiya-besplatnye-programmy-dlya-windows/"> <div class="title"> Бесплатные программы для Windows скачать бесплатно </div> </a> <p class="text"> Сегодня компьютерные технологии, стремительно развиваются, совершенствуя другие отрасли производства. Для развития других технологий, с помощью компьютерных, нужны специальные программы. Эти программы устанавливают на многие заводы и фабрики, чтобы... </p> <a href="/category/useful-programs/" class="catName">Полезные программы</a> <div class="clr"></div> </li> <li id="bx_3218110189_16277"> <div class="info" style="position:relative;"> <a href="/kak-vyvesti-raznoe-izobrazhenie-na-dva-monitora-dva-monitora-dlya/" class="date">2024-05-07 00:22:21</a> </div> <a href="/kak-vyvesti-raznoe-izobrazhenie-na-dva-monitora-dva-monitora-dlya/"> <div class="title"> Два монитора – для активных пользователей ПК </div> </a> <p class="text"> Инструкция Два сравнительно небольших экрана могут с легкостью заменить один широкоформатный с большой диагональю. Иногда подключение второго позволяет использовать одновременно несколько функций одного компьютера. Современные видеоадаптеры в... </p> <a href="/category/solving-problems/" class="catName">Решение проблем</a> <div class="clr"></div> </li> </ul> <div> </div> <div class="mb40 clear clearfix"> </div> </div> <div class="fr width300"> <div class="catTitle blackStyle"> <span class="fl noLink">Категории</span> <div class="clr"></div> </div> <div class="mb40"> <ul class="medbeSidebarNav"> <li> <a href="/category/windows-10/">Windows 10</a> </li> <li> <a href="/category/tips-for-beginners/">Советы начинающим</a> </li> <li> <a href="/category/internet-tips/">Интернет-подсказки</a> </li> <li> <a href="/category/useful-programs/">Полезные программы</a> </li> <li> <a href="/category/hardware-solutions/">Аппаратные решения</a> </li> <li> <a href="/category/configuring-wi-fi/">Настройка Wi-Fi</a> </li> <li> <a href="/category/solving-problems/">Решение проблем</a> </li> <li> <a href="/category/configuring-windows/">Настройка Windows</a> </li> </ul> </div> <div class="cancel-mb40"> </div> <div class="mb40 pr"> <div class="catTitle" data-click="y"> <span class="fl noLinknew">Видеоматериалы</span> <div class="frnew"></div> <div class="clr"></div> </div> <div class="medbeSidebarCarousel medbeArticle"> <ul> <li> <a href="/kak-otkryt-papku-v-komandnoi-stroke-na-windows-kak-otkryt-konsol-vypolnit-na/"> <img src="/uploads/99e89424f2adb11996a69d750d521e3c.jpg" alt="Как открыть консоль выполнить на windows 10" loading=lazy> <div class="playBg"></div> <p> Как открыть консоль выполнить на windows 10 </p> </a> <a href="/category/tips-for-beginners/" class="catName">Советы начинающим</a> </li> <!-- /next_post --> </ul> </div> </div> <div class="cancel-mb40"> </div> <div class="mb40"> <div class="mb40"> <div class="catTitle" data-click="y"> <span class="fl noLinknew">Популярное</span> <div class="frnew"></div> <div class="clr"></div> </div> <ul class="medbeArticle sidebarEvents"> <li> <a href="/peremeshchenie-profilya-polzovatelya-standartnymi-sredstvami-windows-kak-v-windows/"> <img src="/uploads/59fe7e573328d24871fe2935b9706c24.jpg" width="100px" alt="Как в Windows переместить папки пользователя на другой локальный диск?" loading=lazy> <div class="info"> <span class="date">Аппаратные решения</span> </div> <div class="title"> Как в Windows переместить папки пользователя на другой локальный диск? </div> <div class="clr"></div> </a> </li> <li> <a href="/u-23-e-mail-elektronnaya-pochta-tema-elektronnaya-pochta-e-mail-komu-i-dlya-chego-neobhodim/"> <img src="/uploads/32b8f60fc6487ae047c6a42f3fb2a833.jpg" width="100px" alt="Тема: электронная почта (e-mail)" loading=lazy> <div class="info"> <span class="date">Решение проблем</span> </div> <div class="title"> Тема: электронная почта (e-mail) </div> <div class="clr"></div> </a> </li> <li> <a href="/street-storm-skachat-obnovlenie-radar-detektory-street-storm-obnovlenie-po-obnovlenie/"> <img src="/uploads/234b2558a611dbf47b0c26f903df5f0d.jpg" width="100px" alt="Радар детекторы Street Storm обновление ПО" loading=lazy> <div class="info"> <span class="date">Решение проблем</span> </div> <div class="title"> Радар детекторы Street Storm обновление ПО </div> <div class="clr"></div> </a> </li> </ul> </div> </div> <div class="cancel-mb40"> </div> <div class="mb40"> <div class="catTitle" data-click="y"> <span class="fl noLinknew">Новое</span> <div class="frnew"></div> <div class="clr"></div> </div> <ul class="medbeArticle clinicsCountry"> <li> <a href="/bolshaya-kolonka-jbl-perenosnaya-portativnaya-kolonka-jbl-xtreme-pochemu-vazhno/"> <img src="/uploads/55aaef5f4bd5a6ba7762845849da826f.jpg" width="100px" alt="Портативная колонка JBL Xtreme" loading=lazy> <div class="title"> Портативная колонка JBL Xtreme </div> <div class="clr"></div> </a> </li> <li> <a href="/ne-rabotaet-perednii-usb-3-0-ne-rabotayut-usb-porty-na-kompyutere-puti-resheniya/"> <img src="/uploads/518aef24f67a32ffc762c4f21d5e85e8.jpg" width="100px" alt="Не работает передний usb 3" loading=lazy> <div class="title"> Не работает передний usb 3 </div> <div class="clr"></div> </a> </li> <li> <a href="/adobe-premiere-pro-obzor-programmy-chto-takoe-premiere-pro-trebuetsya-li/"> <img src="/uploads/b04d975347b64d93e62986431908dad6.jpg" width="100px" alt="Adobe premiere pro обзор программы" loading=lazy> <div class="title"> Adobe premiere pro обзор программы </div> <div class="clr"></div> </a> </li> <li> <a href="/skachat-programmu-dlya-remonta-sistemy-kompyutera-i-noutbuka/"> <img src="/uploads/d20fca631f1e5da11c7c4b6f4e938b70.jpg" width="100px" alt="Программы для восстановления системы" loading=lazy> <div class="title"> Программы для восстановления системы </div> <div class="clr"></div> </a> </li> <li> <a href="/windows-registraciya-failov-s-rasshireniem-dll-i-ocx-neskolko-sposobov/"> <img src="/uploads/ee68d4ebcb7b7883f88f35fd1163a207.jpg" width="100px" alt="Windows Регистрация файлов с расширением *" loading=lazy> <div class="title"> Windows Регистрация файлов с расширением * </div> <div class="clr"></div> </a> </li> </ul> </div> </div> </div> <div class="clr"></div> <div class="clr mb42-"></div> </main> </div> <footer class="footer"> <div class="footerWrap"> <ul class="footNav"> <li> <a href="/category/windows-10/">Windows 10</a> </li> <li> <a href="/category/tips-for-beginners/">Советы начинающим</a> </li> <li> <a href="/category/internet-tips/">Интернет-подсказки</a> </li> <li> <a href="/category/useful-programs/">Полезные программы</a> </li> </ul> <ul class="footNav mr0"> <li> <a href="/category/windows-10/">Windows 10</a> </li> <li> <a href="/category/tips-for-beginners/">Советы начинающим</a> </li> <li> <a href="/category/internet-tips/">Интернет-подсказки</a> </li> <li> <a href="/category/useful-programs/">Полезные программы</a> </li> </ul> <div class="footSep"></div> <div class="fl width405"> <div class="medbeWarning" style="font-size: 10px;"> Советы пользователям компьютера <p></p> <br /> </div> <div style="position:absolute; top:50px; right:15px; width:300px;"> <noindex> <br /> </noindex> </div> </div> <div class="footSep"></div> <div class="fl "> <div class="copyright"> <br /> <noindex> <div id="liv"> </div> <br> </noindex></div> <div style="position:absolute; top:50px; right:15px; width:300px;"> <noindex> <br /> </noindex> </div> </div> <div id="onTop"></div> <div class="clr"></div> <div class="links"></div> <div class="clr"></div> </div> </footer> <div class="overlay"></div> <div style="display: none;" id="ajax_result"></div> <div class="modal fade" id="send_message" tabindex="-1" role="dialog" aria-labelledby="message" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <a href="#" class="close" data-dismiss="modal" aria-hidden="true"></a> </div> <div class="modal-body"> <form action="/materials/sakharnyy-diabet/preparaty-insulina-i-insulinoterapiya/" method="POST"> <input type="hidden" name="sessid" id="sessid" value="190649912f2d5ccc3e7496471b00b5c2" /> <input name="head" type="text" placeholder="Тема" value=""> <textarea name="message" placeholder="Сообщения"></textarea> <input type="hidden" name="PARAMS_HASH" value="2d477b672b0c8e6bb03d8fa4ffc011a9"> <input type="submit" class="btn" name="submit" value="Отправить"> </form> </div> </div> </div> </div> <script type="text/javascript" data-skip-moving="true"> (function(w, d, n) { var cl = "bx-core"; var ht = d.documentElement; var htc = ht ? ht.className : undefined; if (htc === undefined || htc.indexOf(cl) !== -1) { return; } var ua = n.userAgent; if (/(iPad;)|(iPhone;)/i.test(ua)) { cl += " bx-ios"; } else if (/Android/i.test(ua)) { cl += " bx-android"; } cl += (/(ipad|iphone|android|mobile|touch)/i.test(ua) ? " bx-touch" : " bx-no-touch"); cl += w.devicePixelRatio && w.devicePixelRatio >= 2 ? " bx-retina" : " bx-no-retina"; var ieVersion = -1; if (/AppleWebKit/.test(ua)) { cl += " bx-chrome"; } else if ((ieVersion = getIeVersion()) > 0) { cl += " bx-ie bx-ie" + ieVersion; if (ieVersion > 7 && ieVersion < 10 && !isDoctype()) { cl += " bx-quirks"; } } else if (/Opera/.test(ua)) { cl += " bx-opera"; } else if (/Gecko/.test(ua)) { cl += " bx-firefox"; } if (/Macintosh/i.test(ua)) { cl += " bx-mac"; } ht.className = htc ? htc + " " + cl : cl; function isDoctype() { if (d.compatMode) { return d.compatMode == "CSS1Compat"; } return d.documentElement && d.documentElement.clientHeight; } function getIeVersion() { if (/Opera/i.test(ua) || /Webkit/i.test(ua) || /Firefox/i.test(ua) || /Chrome/i.test(ua)) { return -1; } var rv = -1; if (!!(w.MSStream) && !(w.ActiveXObject) && ("ActiveXObject" in w)) { rv = 11; } else if (!!d.documentMode && d.documentMode >= 10) { rv = 10; } else if (!!d.documentMode && d.documentMode >= 9) { rv = 9; } else if (d.attachEvent && !/Opera/.test(ua)) { rv = 8; } if (rv == -1 || rv == 8) { var re; if (n.appName == "Microsoft Internet Explorer") { re = new RegExp("MSIE ([0-9]+[\.0-9]*)"); if (re.exec(ua) != null) { rv = parseFloat(RegExp.$1); } } else if (n.appName == "Netscape") { rv = 11; re = new RegExp("Trident/.*rv:([0-9]+[\.0-9]*)"); if (re.exec(ua) != null) { rv = parseFloat(RegExp.$1); } } } return rv; } })(window, document, navigator); </script> <link href="/bitrix/cache/css/s2/medbe4_new/kernel_main/kernel_main.css?151557967426562" type="text/css" rel="stylesheet" /> <link href="/bitrix/cache/css/s2/medbe4_new/page_7b72513555721c1b5733d9b22d6efb9b/page_7b72513555721c1b5733d9b22d6efb9b.css?15155796623852" type="text/css" rel="stylesheet" /> <link href="/bitrix/cache/css/s2/medbe4_new/template_fa4e83195cbc9d75f36051d9e26d67c6/template_fa4e83195cbc9d75f36051d9e26d67c6.css?1515579660217752" type="text/css" data-template-style="true" rel="stylesheet" /> <link media="all" href="/local/templates/medbe4_new/css/responsive.css?sd" rel="stylesheet" type="text/css" /> <!--[if lt IE 9]><![endif]--> <script type="text/javascript"> if (!window.BX) window.BX = {}; if (!window.BX.message) window.BX.message = function(mess) { if (typeof mess == 'object') for (var i in mess) BX.message[i] = mess[i]; return true; }; </script> <script type="text/javascript"> (window.BX || top.BX).message({ 'JS_CORE_LOADING': 'Загрузка...', 'JS_CORE_NO_DATA': '- Нет данных -', 'JS_CORE_WINDOW_CLOSE': 'Закрыть', 'JS_CORE_WINDOW_EXPAND': 'Развернуть', 'JS_CORE_WINDOW_NARROW': 'Свернуть в окно', 'JS_CORE_WINDOW_SAVE': 'Сохранить', 'JS_CORE_WINDOW_CANCEL': 'Отменить', 'JS_CORE_WINDOW_CONTINUE': 'Продолжить', 'JS_CORE_H': 'ч', 'JS_CORE_M': 'м', 'JS_CORE_S': 'с', 'JSADM_AI_HIDE_EXTRA': 'Скрыть лишние', 'JSADM_AI_ALL_NOTIF': 'Показать все', 'JSADM_AUTH_REQ': 'Требуется авторизация!', 'JS_CORE_WINDOW_AUTH': 'Войти', 'JS_CORE_IMAGE_FULL': 'Полный размер' }); </script> <script type="text/javascript"> (window.BX || top.BX).message({ 'LANGUAGE_ID': 'ru', 'FORMAT_DATE': 'DD.MM.YYYY', 'FORMAT_DATETIME': 'DD.MM.YYYY HH:MI:SS', 'COOKIE_PREFIX': 'BITRIX_SM', 'SERVER_TZ_OFFSET': '3600', 'SITE_ID': 's2', 'SITE_DIR': '/', 'USER_ID': '', 'SERVER_TIME': '1515581305', 'USER_TZ_OFFSET': '0', 'USER_TZ_AUTO': 'Y', 'bitrix_sessid': '190649912f2d5ccc3e7496471b00b5c2' }); </script> <script type="text/javascript" src="/bitrix/cache/js/s2/medbe4_new/kernel_main/kernel_main.js?1515579673298080"></script> <script type="text/javascript" src="/bitrix/js/main/core/core_db.min.js?14979660558699"></script> <script type="text/javascript" src="/bitrix/js/main/core/core_frame_cache.min.js?146900780711191"></script> <script type="text/javascript"> BX.setJSList(['/bitrix/js/main/core/core.js', '/bitrix/js/main/core/core_ajax.js', '/bitrix/js/main/json/json2.min.js', '/bitrix/js/main/core/core_ls.js', '/bitrix/js/main/core/core_fx.js', '/bitrix/js/main/core/core_popup.js', '/bitrix/js/main/session.js', '/bitrix/js/main/core/core_window.js', '/bitrix/js/main/core/core_date.js', '/bitrix/js/main/utils.js', '/local/templates/medbe4_new/js/jquery.js', '/local/templates/medbe4_new/js/jquery.jcarousel.min.js', '/local/templates/medbe4_new/js/jquery.formstyler.min.js', '/local/templates/medbe4_new/js/jquery.mCustomScrollbar.concat.min.js', '/local/templates/medbe4_new/js/modals.js', '/local/templates/medbe4_new/js/tabs.js', '/local/templates/medbe4_new/js/ontop.js', '/local/templates/medbe4_new/js/placeholder.min.js', '/media/js/scrollbar/jquery.mCustomScrollbar.concat.min.js', '/media/js/header.js', '/local/templates/medbe4_new/js/scripts.js', '/feedback/twin.js']); </script> <script> BX.ready(function() { $("[data-preload]").each(function(i, el) { $this = $(el); $this.load($this.data("preload"), function() { $this.find("form").addClass("js-form") }); }); $(document).on({ submit: function() { $this = $(this); var action = $this.attr("action"); var data = $this.serialize() + "&web_form_submit=Y"; $.post(action, data, function(data) { $this.closest("div").html(data); }) return false; } }, ".js-form"); }) </script> <script type="text/javascript" src="/bitrix/cache/js/s2/medbe4_new/template_a5d224f830c08eebc70bc5559ca1712e/template_a5d224f830c08eebc70bc5559ca1712e.js?1515579660221230"></script> <script> $(function() { if ('jcarousel' in $) { $('.medbeCarousel').jcarousel({ // Configuration goes here }); $('.medbeCarousel-prev').jcarouselControl({ target: '-=1' }); $('.medbeCarousel-next').jcarouselControl({ target: '+=1' }); $('.medbeSidebarCarousel').jcarousel({ // Configuration goes here }); $('.medbeSidebarCarousel-prev').jcarouselControl({ target: '-=1' }); $('.medbeSidebarCarousel-next').jcarouselControl({ target: '+=1' }); $(window).on("load resize", function() { var w = this.innerWidth; if ($('.medbeCarousel').hasClass('halfWidthCarousel')) { if (w > 1279) { c = 771; } else { c = 377; } } else { if (w > 1279) { c = 1160; } else { c = 780; } } $('.medbeCarousel').css('width', c + 'px'); }); } }); // Script (Fixed menu) // $(window).on("scroll load", function(){ // var w2 = this.innerWidth; // var top = $(window).scrollTop(); // if (top > 120) $('.mainNav > ul').css({ // 'max-width': '100%', // 'position': 'fixed', // 'top': 0 // } ); // else { // $('.mainNav > ul').css({ // 'position': 'relative', // 'max-width': 1280 // } ); // } // } ); jQuery(window).scroll(function() { topMain(); // on scroll }); topMain(); // on load window.topNavSmall = false; function topMain() { var _scrollTop = jQuery(document).scrollTop(); if (_scrollTop > 0) { jQuery('.mainNav').addClass('fixed'); window.topNavSmall = true; } if (window.topNavSmall === true && _scrollTop < 2) { jQuery('.mainNav').removeClass('fixed'); } } </script> <script> </script> <script> (function($) { $(function() { $('#pc_add_photo').styler({ filePlaceholder: 'Добавить фото перед статьей' }); $('input, select').styler(); }) })(jQuery) </script> <script> (function($) { $(window).load(function() { if ('mCustomScrollbar' in $) $(".medbeScrollBlock").mCustomScrollbar(); }); })(jQuery); </script> <script> $(document).ready(function() { $("#sorting_catalog").change(function() { $("#form_for_sorting_catalog").submit(); }); }); </script> <script> $(document).ready(function() { $('.catTitle').click(function() { if ($(this).data("click") != "y") { $(this).parents('.doctorMat').toggleClass('hidden'); return false } }); }); </script> <script> $(document).ready(function() { $('input, textarea').on('focus blur', function() { var placeholder = $(this).attr('placeholder'); if ($(this).val() == placeholder) { $(this).val(''); } else if ($(this).val() == '') { $(this).val(placeholder); }; }); }); </script> <script> $(document).ready(function() { //Placeholder $('input[placeholder], textarea[placeholder]').placeholder(); }); </script> <script type="text/javascript"> function slyLink() { var istS = 'Источник:'; var copyR = '© usercpu.ru'; var body_element = document.getElementsByTagName('body')[0]; var choose; choose = window.getSelection(); var myLink = document.location.href; var authorLink = "<br /><br />" + istS + ' ' + "<a href='" + myLink + "'>" + myLink + "</a><br />" + copyR; var copytext = choose + authorLink; var addDiv = document.createElement('div'); addDiv.style.position = 'absolute'; addDiv.style.left = '-99999px'; body_element.appendChild(addDiv); addDiv.innerHTML = copytext; choose.selectAllChildren(addDiv); window.setTimeout(function() { body_element.removeChild(addDiv); }, 0); } document.oncopy = slyLink; </script> <script> $(function() { /*$(document).on("click", ".js-open-menu-a", function(){ $("#mainNav").slideToggle(200); } );*/ /* $(document).on({ click: function(){ $(this).siblings("nav").slideToggle(200); } , /!*touchend: function(){ $(this).siblings("nav").slideToggle(200); } *!/ } ,".js-open-menu");*/ }); </script> <script> var busy = false; $(function() { $("#infinity-next-page").addClass("btn").addClass("btn-blue"); $(document).on({ click: function() { if (busy) return false; console.log("1"); $("#nextWrap").find("a").css("opacity", 0.5); busy = true; $.post($(this).attr("href") + "&ajaxNovinki=Y", function(data) { busy = false $(".js-novinki").html($(".js-novinki").html() + data.html); $("#nextWrap").html(data.next); $("#infinity-next-page").addClass("btn").addClass("btn-blue"); //else $("#nextWrap").hide(); }, "json"); return false; } }, "#infinity-next-page"); }); </script> <script> $(document).ready(function() { $("#headfbwin, #feed").click(function() { $(".quest_form").show(); $('input, select').styler(); dh = $(document).height() + "; " + $(".quest_form").height(); h = ($(document).height() / 2) * -1; $(".quest_form").css("bottom", h + "px"); $(".overlay").show(); $(".q_form_close").click(function() { $(".quest_form").hide(); $(".overlay").hide(); }); $(".close2").click(function() { $(".oki").hide(); $(".overlay").hide(); }); $(".overlay").click(function() { $(".quest_form").hide(); $(".oki").hide(); $(".overlay").hide(); }); }); }); </script> <script> function selectHandler() { var $menu = $('.news-categories__list'); var $current = $('.news-categories__current'); var width = 0; if ($menu.outerWidth() > $current.outerWidth()) { $current.width($menu.outerWidth()); $menu.width($menu.outerWidth()); } $('.news-categories__current').click(function() { $menu.toggleClass('active'); }); $('body').click(function(e) { var $target = $(e.target); if (!$target.parents('.news-categories').length) $menu.removeClass('active'); }); $('.news-categories__list > ul').mCustomScrollbar({ theme: 'rounded', scrollInertia: 200 }); $('ul.tabs').delegate('li:not(.current)', 'click', function() { $(this).addClass('current').siblings().removeClass('current') .parents('div.section').find('div.box').hide().eq($(this).index()).fadeIn(150); }) } if (window.frameCacheVars !== undefined) { BX.addCustomEvent("onFrameDataReceived", function(json) { selectHandler(); }); } else { BX.ready(function() { selectHandler(); }); } </script> <script async src="/js/html5.js"></script> <script src="/local/templates/medbe4_new/components/bitrix/form.result.new/free_cons/_script.js?dsss" type="text/javascript"></script> </body> </html>