Контакти

Використання фреймів. Iframe і Frame - що це таке і як краще використовувати фрейми в Html. Використання тега A для завантаження у фрейм

Сфери застосування фреймів

Розробникам HTML-документів надається досить багатий вибір форм відображення інформації на сторінках. Текстова і графічна інформація може бути впорядкована і організована за допомогою списків, таблиць або просто за допомогою параметрів вирівнювання, завдання горизонтальних ліній, поділу на абзаци. Іноді цих можливостей виявляється недостатньо і тоді доводиться розбивати вікно перегляду браузера на окремі області або фрейми (frames). У ряді російськомовних описів мови HTML замість терміна фрейми використовується термін кадри. Частота використання обох термінів приблизно однакова.

Вибір фреймової структури відображення інформації на WWW виправданий в наступних випадках:

  • при необхідності організувати управління завантаженням документів в одну з подобластей вікна перегляду браузера при роботі в інший подобласти;
  • для розташування в певному місці вікна перегляду інформації, яка повинна постійно перебувати на екрані незалежно від змісту інших підгалузей екрану;
  • для подання інформації, яку зручно розташувати в декількох суміжних підгалузях вікна, кожна з яких може проглядатися незалежно.

Наведений перелік не є вичерпним все можливі випадки, Де можна застосувати фрейми, а носить рекомендаційний характер.

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

На рис. 5.1 показана одна з HTML-сторінок агентства "Фінмаркет", що спеціалізується на наданні інформації з фінансових і фондових ринків Росії.

Мал. 5.1. Типовий Web-документ з фреймової структурою

На цій сторінці вікно браузера розбивається на три фрейми. Нижня частина вікна займає 20% висоти всього вікна і містить постійну інформацію, яка в даному випадку є графічне меню, що дозволяє в будь-який момент звернутися до найбільш важливих розділів. Цей фрейм не може змінювати свої розміри по командам користувача і не має смуг прокрутки. Верхня частина вікна (складова 80% висоти) розділена по горизонталі на два фрейми. Лівий фрейм містить зміст документів, які можуть бути переглянуті користувачем. Правий фрейм, що займає більшу частину вікна перегляду, призначений для відображення самих документів. При первинному завантаженні ці два фрейми ділять вікно браузера по горизонталі в співвідношенні 15% на 85%. Це співвідношення може змінюватися користувачем при перегляді, що дозволяє вибрати оптимальні розміри фреймів з урахуванням вмісту завантажених документів. Кожен з цих фреймів має свою смугу прокрутки, що забезпечує можливість перегляду всього вмісту фрейма незалежно від розміру самого фрейму, всього вікна браузера і використовуваних шрифтів. При виборі будь-якого посилання в лівому фреймі відповідний документ буде завантажений в правий фрейм. Така структура дозволяє одночасно бачити на екрані і зміст документів, і вміст обраного документа.

Наведемо без пояснень фрагмент HTML-коду, за яким побудований документ з даною структурою:

Даний приклад показує найбільш типове використання фреймових структур, коли один фрейм служить змістом документів, а інший використовується для завантаження їх вмісту. Рішення такого завдання без застосування фреймів зазвичай виконується наступним чином. На одній зі сторінок розташовують зміст, що складається з посилань на інші документи або їх окремі фрагменти. При переході по такому посиланню зміст зникає, а на його місце завантажується потрібний документ, після прочитання якого зазвичай необхідно знову повернутися до змісту. При використанні фреймів таке повернення стає непотрібним, так як зміст постійно розташовується на частині екрана.

В інтернеті можна знайти сайт електронного видання популярного в Санкт-Петербурзі адресно-телефонного довідника "Весь Петербург".

Електронна версія довідника доступна за адресою http://www.allpetersburg.ru і дозволяє знаходити потрібні відомості за запитами користувача. Дана сторінка документа також має фреймову структуру і складається з двох фреймів, причому перший з них має ширину 100 пікселів, а другий займає все ширину вікна перегляду. Фрейм, розташований з лівого боку, використовується для графічного меню, Постійно присутнього на екрані, а також містить логотип компанії "Nevalink". Другий фрейм містить документ, який в даному випадку є формою для запиту користувача. Структура цієї сторінки визначена наступним HTML-кодом:

Фрейми дуже схожі на таблиці - і ті і інші здійснюють розбиття вікна перегляду браузера на прямокутні області, в яких розташовується деяка інформація. Однак за допомогою фреймів можна вирішити не тільки завдання форматування сторінок документа, але організувати взаємодію між ними. Принципова різниця між фреймами і таблицями полягає в тому, що кожному кадру повинен відповідати окремий HTML-документ, а вміст всіх елементів таблиці завжди є частиною одного документа. Крім того, відображається у фреймі сторінка може прокручуватися при перегляді незалежно від інших. Кожен фрейм по суті є окремим "міні-браузером". На відміну від фреймів, вся структура яких завжди представлена \u200b\u200bна екрані, таблиці можуть повністю не поміщатися в вікні і бути переглянуті тільки по частинах. Звідси випливає висновок, що якщо в HTML-таблицях загальне число осередків практично не обмежена і може досягати декількох сотень, то число фреймів в документі зазвичай не перевищує кількох одиниць.

Порада

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

В кінцевому підсумку, вибір структури документа - табличній або фреймовой - залежить від багатьох факторів і не може бути однозначно визначений.

існують також сторінки, які на вигляд побудована аналогічно попереднім. Для прикладу можна взяти сторінку дуже популярного в усьому світі збірника програмних продуктів, Призначених в основному для роботи з Інтернетом. Адреса сервера http://www.tucows.com. Зауважимо, що ім'я сервера визначила абревіатура, отримана від скорочення повної назви збірки - The Ultimate Collection of Winsock Software. Оскільки скорочення tucows виявилося співзвучним словосполученню two cows (дві корови), то на сторінках сервера часто-густо зустрічається зображення корів, а рейтинг програмних продуктів оцінюється в кількості мукання ( "Моо") і графічно зображується у вигляді ряду з відповідного числа корів. Більшість сторінок сервера побудовано однотипно - в лівій частині вікна наводиться список доступних розділів, а в правій частині - перелік програмних продуктів, обрана Вами. На перший погляд структура документа повинна мати приблизно такий же вигляд, як і в попередніх прикладах. Однак в цьому документі фрейми не використовуються! Дана сторінка побудована за допомогою таблиці, яка складається всього лише з одного рядка з двома осередками. Таблиця не має обрамлення і лише має на меті форматування сторінки. Враження поділу екрана на дві частини по вертикалі створено шляхом використання фонового графічного зображення, що містить вертикальну лінію, А зовсім не сіткою таблиці. У цьому можна переконатися, якщо виконувати перегляд сторінки без завантаження зображень. Використання таблиці тут, мабуть, обумовлено міркуваннями більшої доступності документів, оскільки фрейми дозволяють відображати не всі браузери.

Недоліком такого підходу в даному випадку є необхідність повторення в кожному документі всього списку розділів (ліва частина сторінки), що незначно збільшує розмір файлів.

Порівняння наведених прикладів показує, що використання таблиць і фреймів може іноді бути взаємозамінним і визначається побажаннями розробників. Зауважимо, що часто при погляді на сторінку з відображеним на ній документом неможливо визначити, як вона побудована. Кінцевому користувачеві знання внутрішньої структури документа не потрібно, однак при розробці власних Web-сторінок ознайомлення з вихідним кодом існуючих документів було б вкрай корисно. У першому прикладі (див. Рис. 5.1) фреймова структура документа відразу ж видно - наявність двох вертикальних смуг прокрутки вже визначає присутність окремих фреймів. Наступні два приклади зовні дуже схожі, причому неможливо визначити, що перший з них побудований за допомогою фреймів, а другий - за допомогою таблиць. Відмінності будуть проявлятися тільки при роботі з ними. У прикладі адресно-телефонного справочнікапрі прокручуванні документа ліва частина вікна буде залишатися на місці, що можливо тільки при наявності фреймової структури. У наступному прикладі (збірки програмних продуктів) при прокручуванні зміщуватиметься весь вміст вікна.

Подивитися структуру документа при роботі з браузером Netscape можна скориставшись пунктом Page Info (у версіях 3.x браузера Netscape цей пункт меню називався Document Info) меню View (рис. 5.2).

Мал. 5. 2 . Меню View браузера Netscape

Крім того, завжди можна ознайомитися з вихідним HTML-кодом всього документа, скориставшись пунктом Page Source меню View (або пунктом View Frame Source контекстного меню, що викликається правою кнопкою миші, для перегляду HTML-коду документа, завантаженого в обраний фрейм).

Порада

Не слід без необхідності зловживати використанням фреймів, причому їх кількість не повинна перевищувати трьох-чотирьох.

Нерідко на реальних сторінках в інтернеті можна побачити і такі випадки використання фреймів: два суміжних фрейма використані для завантаження документів, які зручно переглядати одночасно і зіставляти один з одним. У кожному з двох документів, що завантажуються у фрейми, використана табличная форма подання інформації. В результаті такої організації даних кожна з двох таблиць може бути переглянута (або роздрукована) окремо, а може вивчатися в порівнянні з іншого.

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

Наступні розділи даної глави присвячені правилам запису документів, що містять фрейми.

Правила опису фреймів

Перейдемо тепер до розгляду правил записи тегів, які використовуються для документів з фреймової структури.

Давайте для початку розглянемо повний HTML-код, який створює документ з фреймами середньої складності:

</p> <p>

Цей приклад створює сторінку з фреймами, показану на рис. 5.3. Як ви бачите, цей HTML-код визначає чотири фрейми. Верхній фрейм займає всю ширину сторінки і містить заголовок. Далі йдуть два центральних фрейма, один з яких розташований з лівого боку і займає 25 відсотків від ширини екрану, а другий займає місце, що залишилося. Останній, четвертий фрейм займає нижню чверть екрану. У кожен з фреймів завантажується окремий HTML-документ, ім'я якого визначається параметром SRC.

Як видно з прикладу, для опису структури фреймів застосовуються теги , і . Розглянемо призначення цих тегів.</p> <span> <br><img src='https://i0.wp.com/webnav.ru/books/html4/frames/07.gif' width="100%" loading=lazy loading=lazy></span> <p><i><b>Мал. 5. <span>3 . </b> Результат відображення браузером Netscape HTML-документа з фреймами, наведеного в прикладі</span> </i></p> <p><b> Тег <FRAMESET> </b></p> <p>Фрейми визначаються в структурі, званій FRAMESET, яка використовується для сторінок, що містять фрейми, замість розділу BODY звичайного документа. Web-сторінки, що складаються з кадрів, які не можуть містити розділ BODY в своєму HTML-коді. У свою чергу, сторінки з розділом BODY не можуть використовувати фрейми.</p> <p><i><b>Порада</b> </i></p> <p><i> <span>Так як для сторінок з фреймами не застосовується розділ BODY, то немає можливості поставити фонове зображення і колір фону для всієї сторінки в цілому. Нагадаємо, що ці установки визначаються параметрами BACKGROUND і BGCOLOR, записуваними в тезі BODY. Однак це не заважає в кожен фрейм завантажувати документи, що мають свої параметри фону.</span> </i></p> <p>Контейнер з тегів <FRAMESET> і</FRAMESET> обрамляє кожен блок визначень фрейма. всередині контейнера <FRAMESET> можуть міститися тільки теги <FRAME> і вкладений нниє теги <FRAMESET>. </p> <p>Тег <FRAMESET> має два параметри: ROWS (рядки) і COLS (стовпці) і записується в наступному вигляді:</p> <p><FRAMESET ROWS="список_ значений" COLS="список_ значений">. </p> <p><i><b>Примітка</b> </i></p> <p><i> <span>Деякі браузери дозволяють використовувати додаткові параметри тега <FRAMESET></span> </i></p> <p>Можна визначити значення для ROWS або COLS, або обох разом. Необхідно визначити, щонайменше, два значення хоча б одного з цих параметрів. Якщо інший параметр опущений, то його значення приймається рівним 100%.</p> <p><i><b>Порада</b> </i></p> <p><i> <span>Якщо в тегу <FRAMESET> визначено тільки одне значення для ROWS і COLS, то цей тег буде вважатися помилковим і браузер проігнорує його. Іншими словами, не можна визначити <FRAMESET>, Що складається тільки з одного фрейма.</span> </i></p> <p>Список значень параметрів ROWS і COLS тега <FRAMESET> являє собою розділений комами список значень, які можуть задаватися в пікселях, у відсотках або в відносних одиницях. Число рядків або стовпців визначається числом значень у відповідному списку. Наприклад, запис</p> <p><FRAMESET ROWS="100,240,140"> </p> <p>визначає набір трьох фреймів. Ці значення є абсолютні значення в пікселах. Іншими словами, перший фрейм (перший рядок) має висоту 100 пікселів, другий - 240 і останній - 140 пікселів.</p> <p>Завдання значень розмірів фреймів в пікселах не дуже зручно. Тут не враховується той факт, що браузери запускаються в різних <a href="https://newtravelers.ru/uk/asus/nazvaniya-operacionnyh-sistem-dlya-kompyutera-spisok-kakie-byvayut.html">операційних системах</a> і з різними дозволами дисплеїв. У той же час, можна визначити абсолютні значення розмірів для деяких випадків, наприклад, для відображення невеликого зображення з відомими розмірами. Кращим варіантом буде встановлення значень у відсотках або в відносних одиницях, наприклад:</p> <p><FRAMESET ROWS="25%,50%,25%">. </p> <p>У цьому прикладі створюються три фрейми, що розміщуються як рядки у всю ширину екрану. Верхній рядок займають 25 відсотків від доступною висоти екрану, середня рядок - 50 відсотків і нижня - 25 відсотків. Якщо сума заданих відсотків не дорівнює 100%, то значення будуть пропорційно отмасштабовані, щоб в результаті вийшло рівно 100%.</p> <p>Значення в відносних одиницях виглядають наступним чином:</p> <p><FRAMESET COLS="*,2*,3*">. </p> <p>Зірочка (*) використовується для пропорційного розподілу простору. Кожна зірочка є ще однією частина цілого. Складаючи все значення чисел, що стоять у зірочок (якщо число опущено, то мається на увазі одиниця), отримаємо знаменник дробу. У цьому прикладі перший стовпець займе 1/6 частина від загальної ширини вікна, другий стовпець - 2/6 (або 1/3), а останній - 3/6 (або 1/2).</p> <p>Пам'ятайте, що <a href="https://newtravelers.ru/uk/wireless/oshibka-v-eksele-chislo-kakie-sushchestvuyut-oboznacheniya-oshibok-i-sposoby.html">числове значення</a> без будь-яких символів визначає абсолютне число пікселів для рядка чи колонки. Значення зі знаком відсотка (%) визначає частку від загальної ширини (для COLS) або висоти (для ROWS) від вікна перегляду, а значення із зірочкою (*) задає пропорційний розподіл простору, що залишилося.</p> <p>Наведемо приклад, який використовує всі три варіанти завдання значень:</p> <p><FRAMESET COLS="100,25%,*,2*">. </p> <p>У цьому прикладі перший стовпець буде мати ширину 100 пікселів. Другий стовпець займе 25 відсотків від всієї ширини вікна перегляду, третій стовпець - 1/3 простору, що залишилося і, нарешті, останній рядок - 2/3. Абсолютні значення рекомендується призначати першими по порядку зліва направо. За ними слідують процентні значення від загального розміру простору. На закінчення записуються значення, що визначають пропорційне розбиття простору, що залишилося.</p> <p><i><b>Порада</b> </i></p> <p><i> <span>Якщо ви використовуєте абсолютні значення параметрів COLS або ROWS, то задавайте їх невеликими, щоб вони могли поміститися в будь-якому вікні браузера, і доповнюйте їх, принаймні, одним значенням, заданим в процентної або відносній формі, для заповнення простору, що залишилося.</span> </i></p> <p>Якщо використовується тег <FRAMESET>, В якому задані значення і COLS, і ROWS, то буде створена сітка з фреймів. наприклад:</p> <p><FRAMESET ROWS="*,2*,*" COLS="2*,*"> </p> <p>Цей рядок HTML-коду створює сітку фреймів з трьома рядками і двома стовпцями. Перша і остання рядки займають 1/4 висоти кожна, а середня рядок - половину. Перший стовпець займає 2/3 ширини, а другий - 1/3.</p> <p>контейнер <FRAMESET> </FRAMESET> може бути вкладений всередину іншого такого ж контейнера, як це було показано в початковому прикладі. Розглянемо далі використання тега <FRAME>. </p> <p><i><b>Примітка</b> </i></p> <p><i> <span>У деяких джерелах за мовою HTML вказується, що параметри COLS і ROWS тега <FRAMESET> є взаємовиключними. Однак і Netscape, і Microsoft <a href="https://newtravelers.ru/uk/useful/ie-ne-mozhet-otobrazit-stranicu-internet-explorer-ne-mozhet-otobrazit.html">Internet Explorer</a> допускають їх спільне використання.</span> </i></p> <p><b> Тег <FRAME> </b></p> <p>Тег <FRAME> визначає одиночний кадр. Він повинен розташовуватися всередині пари тегів <FRAMESET> і</FRAMESET>. наприклад:</p> <p><FRAMESET ROWS="*,2*"> </p> <p><FRAME> </p> <p><FRAME> </p> <p></FRAMESET> </p> <p>Зверніть увагу, що тег <FRAME> не є контейнером і на відміну від <FRAMESET> не має завершального тега. Всі визначення одиночного фрейму виконується одним рядком HTML-коду.</p> <p>Необхідно записати стільки тегів <FRAME>, Скільки окремих фреймів визначено при завданні тега <FRAMESET>. У попередньому прикладі тегом <FRAMESET> задано два рядки, тому треба буде записати два тега <FRAME>. Однак цей приклад, по суті, марний, так як жоден з фреймів не має будь-якого змісту!</p> <p>Тег <FRAME> має шість параметрів: SRC, NAME, MARGINWIDTH, MARGINHEIGHT, SCROLLING і NORESIZE.</p> <p><i><b>Примітка</b> </i></p> <p><i> <span>Деякі браузери дозволяють використовувати ряд додаткових параметрів тега <FRAME>. Огляд можливостей браузерів Netscape і Microsoft Internet Explorer дається в кінці розділу.</span> </i></p> <p>Наведемо запис тега <FRAME> з усіма параметрами:</p> <p><FRAME SRC="url" NAME="window_name" SCROLLING=YES|NO|AUTO </p> <p>MARGINWIDTH \u003d "value" MARGINHEIGHT \u003d "value" NORESIZE\u003e</p> <p>На практиці в тезі <FRAME> рідко використовуються одночасно всі параметри.</p> <p>найбільш <a href="https://newtravelers.ru/uk/android/kak-prervat-ping-v-komandnoi-stroke-komandnaya-stroka-osnovnye.html">важливий параметр</a> - SRC (скорочення від слова source). Досить часто в тезі <FRAME> задається єдиний параметр SRC. наприклад:</p> <p><FRAME SRC="url">. </p> <p>Значення параметра SRC визначає URL-адресу документа, який буде завантажений спочатку в даний фрейм. Зазвичай в якості такого адреси записується ім'я HTML-файла, розташованого в тому ж самому каталозі, що і основний документ. Тоді рядок визначення фрейму буде виглядати, наприклад, так:</p> <p><FRAME SRC="sample.htm">. </p> <p>Зверніть увагу, що будь-який HTML-файл, заданий в описі фрейма, повинен бути повним HTML-документом, а не фрагментом. Це означає, що документ повинен мати <a href="https://newtravelers.ru/uk/the-lg-tvs/teg-html-perenosa-na-druguyu-stroku-perenos-stroki-i-razdelitelnaya.html">теги HTML</a>, HEAD, BODY і т. Д.</p> <p>Звичайно, в якості значення SRC може бути заданий будь-допустимий URL-адресу. Якщо, наприклад, фрейм використовується для відображення зображення в <a href="https://newtravelers.ru/uk/setting/chto-znachit-gif-chto-takoe-gify-v-odnoklassnikah-opisanie-izobrazhenii.html">форматі GIF</a>, Яке розташовується на сервері видавництва даної книги, то слід записати:</p> <p><FRAME SRC="http://www.bhv.ru/example.gif">. </p> <p><i><b>Порада</b> </i></p> <p><i> <span>He задавайте в документі, що описує структуру фреймів, ніякого змісту.</span> </i></p> <p>Звичайний текст, заголовки, графічні зображення та інші елементи не можуть прямо використовуватися в документі, який описує структуру фреймів. Весь зміст фреймів має бути визначено в окремих HTML-файлах, імена яких задаються параметром SRC тега <FRAME>. </p> <p>Параметр NAME визначає ім'я фрейма, яке може використовуватися для посилання до даного кадру. Зазвичай посилання задається з іншого фрейма, розташованого на тій же самій сторінці. наприклад:</p> <p><FRAME SRC="sample.htm" NAME="Frame_1">. </p> <p>Такий запис створює фрейм з ім'ям "Frame_1", на який може бути виконана посилання. наприклад:</p> <p>Клацніть тут для завантаження</p> <p>документа other.htm у фрейм з ім'ям Frame_1.</p> <p>Зверніть увагу на параметр TARGET, який посилається на ім'я фрейма. Якщо для фрейма не задано ім'я, то буде створений фрейм без імені, і не буде можливості використовувати посилання на нього з іншого фрейма. Імена фреймів повинні починатися з алфавітно-цифрового символу.</p> <p>Параметри MARGINWIDTH і MARGINHEIGHT дають можливість встановлювати ширину полів фрейма. Записується це наступним чином:</p> <p>MARGINWIDTH \u003d "value",</p> <p>де "value" - абсолютне значення в пікселах. наприклад:</p> <p>Даний фрейм має поля зверху і знизу по 5 пікселів, а зліва і справа - по 7 пікселів. Не забудьте, що тут йде мова про полях, а не про рамках. Параметри MARGINWIDTH і MARGINHEIGHT визначають простір всередині Фрей-ма, в межах якого не буде розташовуватися ніяка інформація. Мінімально допустиме значення цих параметрів дорівнює одиниці.</p> <p>Для фреймів будуть автоматично створюватися і відображатися смуги прокрутки, якщо вміст фрейма не поміщається повністю в відведеному просторі. Іноді це порушує дизайн сторінки, тому було б зручно мати можливість керувати відображенням смуг прокрутки. Для цих цілей використовується параметр SCROLLING. Формат запису:</p> <p><FRAME SCROLLING="YES|NO|AUTO">. </p> <p>Параметр SCROLLING може приймати три значення: YES, NO або AUTO. Значення AUTO діє так само, як і в разі відсутності параметра SCROLLING. Значення YES викликає поява смуг прокрутки незалежно від необхідності цього, a NO - забороняє їх появу. наприклад:</p> <p><FRAME SCROLLING=YES>. </p> <p>Зазвичай користувач може змінювати розмір фреймів при перегляді сторінки. Якщо встановити курсор миші на рамці фрейму, то курсор прийме форму, що вказує на можливість зміни розмірів, і дозволить виконати переміщення рамки в потрібне місце. Це іноді порушує структуру красиво спроектованих фреймів. Для запобігання можливості зміни користувачем розміру фреймів слід скористатися параметром NORESIZE:</p> <p><FRAME NORESIZE>. </p> <p>Цей параметр не вимагає ніяких значень. Природно, коли заданий параметр NORESIZE для одного з фреймів, то розмір будь-якого із суміжних фреймів також не може бути змінений. Іноді, в залежності від розташування фреймів, використання параметра NORESIZE в одному з фреймів буде досить, щоб запобігти можливості зміни розмірів будь-якого з них на екрані.</p> <p><b> Тег <NOFRAMES> </b></p> <p>Можливість роботи з кадрами передбачає ні в стандарті HTML 3.0, ні в HTML 3.2. Тут до останнього часу складалася досить типова ситуація, коли реально використовуються можливості активно застосовуються на багатьох WWW-сторінках, однак не є частиною стандарту. Це означало, що браузери цілком законно могли ігнорувати фрейми. З появою стандарту HTML 4.0 ситуація змінилася - тепер підтримка фреймових структур закріплена стандартом. Зауважимо, що більшість сучасних браузерів розпізнавали фрейми і до появи HTML 4.O. Проте, необхідно надавати інформацію користувачам, браузери без підтримки фреймів. Для таких браузерів можна передбачити альтернативну інформацію, яка записується між парою тегів <NOFRAMES> і. Це виглядає наступним чином:

</p> <p>весь HTML-документ</p> <p>

Все, що розміщено між тегами і, Буде відображатися браузерами, що не мають можливостей підтримки фреймів. Браузери з підтримкою фреймів проігнорують всю інформацію між цими тегами.

Зауважимо, що в реальному житті розробники HTML-сторінок часто не використовують можливості тега для створення сторінок без фреймових структур, а просто створюють дві версії своїх HTML-документів. Для такого варіанту на стартовій сторінці зазвичай пропонується вибір завантаження документа з фреймової структурою або без неї. Далі в залежності від вибору користувача завантажується тільки один варіант документа.</p> <p><b><span> Особливості опису фреймових структур</span> </b></p> <p>Одним з найважливіших тегів, що застосовуються при описі фреймових структур, є тег <FRAME>. Тег має ряд параметрів, жоден з яких не є обов'язковим і не залежить від інших, проте при їх запису слід враховувати ряд моментів.</p> <p>Виявляється, що при необхідності створення фрейма, в який в подальшому може бути завантажений будь-якої документ, наприклад, по команді з іншого фрейма, слід в тезі <FRAME> записати параметр SRC. якщо цей</p> <p>параметр опущений, то фрейм не буде створена, хоча місце під нього буде залишено. Наприклад, запис типу <FRAME NAME="B"> цілком логічна і могла б визначати фрейм з ім'ям "В", в який початково не завантажується ніякої документ. Однак через відсутність параметра SRC фрейм з таким ім'ям не буде існувати, тому подальші спроби завантажити в нього який-небудь документ залишаться безрезультатними, а місце у вікні, відведений під даний фрейм, буде пустувати. Більш того, деякі браузери (наприклад, Microsoft Internet <a href="https://newtravelers.ru/uk/the-lg-tvs/obnovlenie-internet-explorer-obnovlyaem-brauzer-internet-explorer-do-aktualnoi-versii-kak.html">Explorer версії</a> 3 для Windows З.хх) при спробі завантаження документа в такій фрейм видадуть повідомлення про помилку і завершать роботу.</p> <p>Обов'язковість завдання параметра SRC не піддається логічному поясненню, тому найкраще просто взяти до відома цей факт. Тоді навіть при відсутності документа, який необхідно завантажувати в даний фрейм з самого початку, слід в параметрі SRC задати ім'я якого-небудь файлу. Наприклад, такий файл можна назвати empty.htm (empty - порожній), вмістом якого буде мінімально можливий коректний HTML-документ, а саме:</p> <p><HTML> </p> <p><HEAD> </p> <p></HEAD> </p> <p><BODY> </p> <p></BODY> </p> <p></HTML> </p> <p>можна скоротити <a href="https://newtravelers.ru/uk/tips/ispolzovanie-skd-dlya-pechati-dokumentov-ispolzovanie-istochnika.html">даний документ</a> до двох тегів: <HTMLX/HTML>, Що також буде вірним HTML-документом. Йдучи по шляху максимального скорочення розмірів "порожнього" документа, можна обмежитися файлом, розмір якого дорівнює одному байту, в якому зберігається символ пробілу (або будь-який інший не відображаються символ). Цей файл не буде коректним HTML-документом, але не викличе нарікань з боку більшості браузерів. Подальше скорочення розміру такого файлу до нуля не виправдане, тому що при його завантаженні браузером Netscape буде видаватися попередження (рис. 5.4) про те, що документ не містить даних.</p> <span> <img src='https://i1.wp.com/webnav.ru/books/html4/frames/08.gif' height="119" width="332" loading=lazy loading=lazy></span> <p><i><b>Мал. 5. <span>4 . </b>Попередження при завантаженні файлу нульової довжини</span> </i></p> <p>При цьому на дане повідомлення необхідно відреагувати, натиснувши клавішу <Enter> або кнопку миші. При будь-перезавантаження документа або зміні розмірів вікна перегляду браузера повідомлення буде виникати знову.</p> <p>Можна також задати ім'я неіснуючого файлу, однак при цьому браузер Netscape видаватиме попередження (рис. 5.5), що не завадить подальшій роботі, але призведе до аналогічних незручностей.</p> <span> <img src='https://i0.wp.com/webnav.ru/books/html4/frames/09.gif' height="139" width="314" loading=lazy loading=lazy></span> <p><i><b>Мал. 5. <span>5 . </b>Попередження при спробі завантаження неіснуючого файлу</span> </i></p> <p><i><b>Порада</b> </i></p> <p><i> <span>Створіть файл з ім'ям empty.htm, розмір якого дорівнює одному байту, що містить символ пробілу. Прийміть за правило під час запису тега <FRAME> завжди вказувати SRC \u003d empty.htm, якщо відразу неможливо вказати ім'я конкретного файлу.</span> </i></p> <p>приклади фреймів</p> <p>У цьому розділі представлені деякі типові приклади визначень фреймів.</p> <p>Повернемося до прикладу, який наведено на початку даного розділу (рис. 5.3). Цей приклад використовує вкладену структуру <FRAMESET>. зовнішній тег <FRAMESET> створює три рядки висотою, відповідно, в 25, 50 і 25 відсотків від загальної висоти вікна перегляду:</p> <p><FRAMESET ROWS="25%,50%,25%">. </p> <p>Усередині цієї області визначення перша і остання рядки являють собою прості фрейми:</p> <p><FRAME SRC="header.htm"> <FRAME SRC="footer.htm"> </p> <p>Кожна з цих рядків заповнює всю ширину екрану. Перший рядок у верхній частині екрану займає 25 відсотків висоти, і третій рядок у нижній частині також займає 25 відсотків висоти. Між ними, однак, розташовується вкладений тег <FRAMESET>: </p> <p><FRAMESET COLS="25%,75%"> </p> <p><FRAME SRC="list.htm"> </p> <p><FRAME SRC="info.htm"> </p> <p></FRAMESET> </p> <p>Цей тег визначає два стовпці, на які розбивається середня рядок екрана. Рядок, в якій розташовуються ці два стовпці, займає 50 відсотків висоти екрану, що визначено в зовнішньому тегу <FRAMESET>. Лівий стовпець використовує 25 відсотків від ширини екрану, в той час як правий стовпець займає залишилися 75 відсотків ширини.</p> <p>Фрейми для цих стовпців визначені всередині вкладеної пари тегів <FRAMESET> і</FRAMESET>, В той час як визначення фреймів для першої і останньої рядки записується поза цієї пари, але всередині зовнішнього <FRAMESET> у відповідному порядку.</p> <p>Структуру записи легко зрозуміти, якщо сприймати вкладений блок <FRAMESET> як окремий елемент <FRAME>. У нашому прикладі зовнішній тег <FRAMESET> визначає три рядки. Кожна з них повинна бути заповнена. В даному випадку вони заповнюються спочатку окремим елементом <FRAME>, Далі - вкладеним блоком <FRAMESET> шириною в два стовпці, а потім ще одним елементом <FRAME>. </p> <p>Тепер може виникнути питання, чи можна в якості значення параметра SRC тега <FRAME> задати ім'я файлу, який, в свою чергу, містить опис структури фреймів. Так, це допустимо. В даному випадку тег <FRAME> буде використаний для вказівки на HTML-документ, який є фреймовою структурою і використовується в якості окремого фрейма.</p> <p>Повернемося до прикладу і замінимо вкладений <FRAMESET> на окремий <FRAME>. Природно, потрібно два HTML-файлу замість одного, так як вкладений <FRAMESET> тепер буде розташовуватися в окремому документі. Наведемо вміст першого (зовнішнього) файлу:</p> <p><HTML> </p> <p><HEAD> </p> <p></HEAD> </p> <p><FRAMESET ROWS="25%,50%,25%"> </p> <p><FRAME SRC="header.htm"> </p> <p><FRAME SRC="frameset.htm"> </p> <p><FRAME SRC="footer.htm"> </p> <p></FRAMESET> </p> <p><NOFRAMES> </p> <p>Ваш браузер не може відображати фрейми</p> <p>

Другий файл з ім'ям frameset.htm містить наступний код:

У цьому випадку верхня і нижня рядки поводяться як і раніше. Але другий рядок тепер є простим фреймом, як і інші. Однак файл frameset.htm, на який вказує параметр SRC, визначає власну структуру фреймів. В результаті на екрані буде відображено в точності те ж саме, що і в первісному прикладі.

Примітка

Принципово можливо створити вкладені структури , Що використовують теги , Які посилаються на той же самий файл з описом структури фреймів, проте цього робити не слід. Така ситуація призведе до нескінченної рекурсії і не дасть можливості подальшої роботи. Деякі браузери контролюють подібну ситуацію і запобігають можливість збою. Якщо адреса, записаний в SRC, збігається з одним з попередніх адрес в ієрархії фреймів, то він ігнорується, як якби параметр SRC був відсутній взагалі.

Порада

Використовуючи вкладені структури в різних комбінаціях, можливо створити практично будь-яку сітку фреймів, яку можна собі уявити. Однак пам'ятайте, що слід створювати зручний для користувача інтерфейс, а не просто демонструвати своє вміння працювати з кадрами.

Наведемо приклад створення регулярної прямокутної сітки фреймів:

Цей приклад створює сітку фреймів з двома рядками і трьома стовпцями (рис. 5.6). Так як визначено набір з шести фреймів, необхідно також дати шість визначень окремих фреймів . Зверніть увагу, що визначення фреймів даються через підрядник. Тобто перший тег визначає вміст першої колонки в першому рядку, другий - другий колонки, а третій закінчує визначення даних для останньої колонки першого рядка. Останні три фрейми потім заповнюють стовпчики другого рядка.


Мал. 5. 6 . Сітка фреймів 2 на 3

Зауважимо також, що сума значень відсотків в параметрі COLS дорівнює не 100, а лише 90 відсотків. У цьому немає нічого страшного, так як браузер автоматично пропорційно змінить ширину колонок, щоб ліквідувати це протиріччя.

Особливості навігації при використанні фреймів

Робота з документами, що мають фреймової структуру, має деякі особливості, які необхідно знати. Ці особливості JB основному проявляються в навігації при завантаженні документів. Значні відмінності в навігації властиві не тільки різним браузерам, але і різними версіями одного і того ж браузера.

Браузер Netscape версій 3.x і 4.x при натисканні кнопки Back повертає назад документ в той фрейм, дії з якими проводилися останнім. Ті ж дії будуть зроблені в разі, якщо буде обраний пункт Back при виклику контекстного меню в будь-якому з фреймів. Нагадаємо, що контекстне меню викликається натисненням правої кнопки миші. Таким чином, незалежно від того, в якому з фреймів було викликано контекстне меню, при натисканні кнопки Back буде виконана скасування останньої операції, навіть якщо вона була проведена в іншому фреймі.

Браузер Netscape версії 2.x працював зовсім по-іншому. Контекстне меню містить команду Back in Frame, виконання якої повертає документ в поточний фрейм, а не виконує скасування останньої операції.

У будь-якій версії Netscape можна зробити закладку на документ, що міститься в обраному фреймі. Для цього необхідно вибрати режим Add Bookmark з контекстного меню, про який говорилося вище. Якщо ж просто буде обраний режим Add Bookmark з головного меню браузера, то буде зроблена закладка на документ з описом структури фреймів , Яка не буде точно вказувати на конкретний фрейм. Можливість створення закладки на документ окремого фрейма зовсім не означає, що при подальшому використанні цієї закладки виникне та ж сама структура фреймів. Документ, на який вказує закладка, буде завантажений в повне вікно поза фреймової структури.

Взаємодія між фреймами

Найпростіша форма перегляду інформації на WWW полягає в читанні сторінок і переходах по посиланнях, при яких поточний документ у вікні браузера заміщається іншим документом. При роботі з фреймами можна організувати більш зручну для користувача схему завантаження документів.

Взаємодія між фреймами полягає в можливості завантаження документів в обраний фрейм по командам з іншого фрейма. Для цієї мети використовується параметр TARGET тега<А>. Даний параметр визначає ім'я фрейма або вікна браузера, в яке буде завантажуватися документ, на який вказує дане посилання. За замовчуванням при відсутності параметра TARGET документ завантажується в поточний фрейм (або вікно). Це замовчування може бути змінено завданням тега з потрібним значенням параметра TARGET. Завдання імені фрейму, в який здійснюється завантаження за замовчуванням, дуже зручно для тих випадків, коли велика кількість посилань повинно направляти документи в певний фрейм. Типова ситуація зі змістом в одному фреймі, посилання з якого завантажують відповідні документи в суміжний фрейм, була показана на початку цього розділу (рис. 5.1). Для цього прикладу в розділі файлу з ім'ям LIST.htm доцільно записати наступну сходинку: . В іншому випадку для кожного посилання довелося б вказувати параметр TARGET.

Імена фреймів повинні починатися з літери або цифри. Як ім'я може здаватися ім'я існуючого вікна або фрейму, а може вказуватися нове ім'я, під яким буде відкрито нове вікно. Є чотири зарезервованих імені, при завданні яких виконуються спеціальні дії. Ці імена починаються з символу підкреслення (_): "_blank", "_self", "_parent" і "_top". Будь-яке інше ім'я, яке починається з символу "підкреслення", неприпустимо.

TARGET \u003d "_ blank" - забезпечує завантаження документа в нове вікно. Це вікно не матиме імені, а отже, в нього неможливо буде завантажити інший документ.

TARGET \u003d "_ self" - завантаження документа буде проведена в поточний фрейм (або вікно). Такий запис слід використовувати для обходу умовчання, заданого тегом .

TARGET \u003d "_ top" - викликає завантаження документа в повне вікно. Якщо документ вже розташовується в повному вікні, то дане значення діє так само, як"_Self".

TARGET \u003d "_ parent" - викликає завантаження документа в область, яку займає фреймом-батьком поточного фрейма. При відсутності фрейма-батька дане значення параметра діє так само, як"_Top".

Примітка

У ряді джерел з мови HTML помилково стверджується, що при відсутності батька у фрейму значення "_parent" еквівалентно "_self". Таке твердження не завжди коректно.

попередження

Зарезервовані імена фреймів "_blank", "_self", "_parent" і "_top" повинні записуватися малими латинськими буквами. Зауважимо, що така вимогливість властива тільки Netscape. Браузер Microsoft Internet Explorer правильно розпізнає зарезервовані імена, записані на будь-якому регістрі.

Наведемо приклади взаємодії між фреймами і окремими вікнами браузера. Розглянемо наступний HTML-код:

Використання фреймів

У цьому HTML-документі дається опис структури, що складається з трьох фреймів з іменами "А", "B" і "C". Імена фреймів будуть потрібні надалі для організації посилань між фреймами. Зауважимо, що на фрейм з ім'ям "А" в даному прикладі посилань не буде, тому він міг бути залишений без імені взагалі. При завантаженні наведеного вище документа в браузер у фреймах буде відображена інформація, що міститься в файлах, які визначаються параметром SRC. У кадр "А" потрапить вміст файлу frame_a.htm, а решта два фрейми отримають дані з файлу empty.htm, який не має даних, що відображаються. Ще раз нагадаємо, що HTML-документ, що описує структуру фреймів, не має розділу .

Наведемо текст файлу з ім'ям frame_a.htm:

Документ для фрейма A

D

4. Завантаження документа в нове вікно

5. Завантаження документа в повне вікно

6. Завантаження документа в поточний фрейм

Цей документ є повним HTML-документом, який має розділи і і, в свою чергу, має посилання на файл з ім'ям test.htm, що розташовується в тому ж самому каталозі, що і файл frame_a.htm.

Текст файлу test.htm вкрай простий:

тестовий документ

Текст тестового документа

Файл frame_a.htm, вміст якого загрузилось у фрейм "А", має шість посилань на один і той же файл test.htm з різним значенням параметра TARGET.

Розглянемо дії, які будуть відбуватися при реалізації цих посилань. Перше посилання зі значенням TARGET \u003d "B" буде завантажувати файл test.htm у фрейм з ім'ям "в". Зауважимо, що після реалізації будь-якої з шести посилань браузер Netscape автоматично забарвить в інший колір всі шість, так як вони вказують на один і той же файл. Microsoft Internet Explorer відзначає тільки дійсно реалізовані посилання.

Друге посилання виконає ті ж дії для фрейма "C". Спочатку у фреймах "B" і "C" нічого немає (точніше завантажено вміст порожнього файлу empty.htm). Реалізація першої та другої посилань заповнить ці фрейми.

Третя посилання зі значенням TARGET \u003d MD "призведе до утворення нового вікна браузера з ім'ям" D "і завантаженні в нього файлу test.htm. Зауважимо, що форма запису цієї посилання нічим не відрізняється від перших двох. Різниця полягає в тому, що в перших двох випадках посилання були дані на існуючі фрейми, імена яких були визначені в файлі зі структурою фреймів, а в даному випадку посилання дана на неіснуючий об'єкт. Якщо це посилання буде виконана хоча б один раз, то вікно з ім'ям "D" буде утворено і повторний перехід по посиланню лише перезавантажить дані в існуюче тепер вікно "D". Звичайно, користувач може в будь-який момент його закрити і знову утворити вибором даної посилання. На рис. 5.7 показана ситуація після того, як перші три посилання були реалізовані. Нагадаємо, що розташування і розміри вікон на екрані визначаються користувачем.

Мал. 5. 7 . Ситуація, отримана після послідовної реалізації перших трьох посилань, наявних в лівому фреймі

П'ята посилання зі значенням TARGET \u003d "_ top" завантажить документ в повне вікно замість всієї фреймової структури. При такому значенні параметра TARGET нове вікно не утворюється. Повернення до фреймової структурі можливий натисканням кнопки Back.

Примітка

Імена фреймів або вікон браузера не слід плутати з назвами завантажуються документів. Імена фреймів при перегляді ніде не видно, вони потрібні тільки для організації взаємодії і тому приховані від користувача. Побачити їх можна тільки при перегляді вихідного тексту HTML-файлів.

Порада

Нагадаємо, що назви завантажуються документів задаються тегом . Якщо документ завантажений в повне вікно, то його назва видається в самій верхній частині вікна браузера. Якщо ж документ завантажується у фрейм, то його назва ніде не відображається, а у верхній частині вікна як і раніше буде розташовуватися назва документа, що містить опис фреймової структури документа. Тому назви документів, призначених для перегляду у фреймах, не мають великого значення. Наприклад, на рис. 5.7 один і той же документ завантажений у фрейми "в" і "С", а також в окреме вікно з ім'ям "D", при цьому назва документа видно тільки у вікні "D". Проте, навряд чи варто рекомендувати опускати назви документів, що завантажуються у фрейми, так вони можуть з'явитися, наприклад, в списку закладок (Bookmarks) при створенні закладки на документ, розташований у фреймі або списку переглянутих документів.</span> </i></p> <p>Розглянемо ще один цікавий приклад організації взаємодії між фреймами і вікнами браузера. Нехай є текст основного завантажується HTML-документа:</p> <p><HTML> </p> <p><HEAD> </p> <p><TITLE>Використання імен вікон

Документа, що має фреймову структуру, в нове вікно

Використання фреймів

Зверніть увагу, що якщо основний документ є стандартним HTML-документом, то завантажується по посиланню з основного документа файл frame.htm містить структуру фреймів і в свою чергу посилається на файл empty.htm.

Після завантаження основного документа вікно браузера буде мати вигляд, показаний на рис. 5.8 (ліве вікно). Весь документ складається з двох посилань. Виконаємо перехід по першій посиланням. Буде утворено нове вікно з ім'ям "D", в якому з'явиться текст файлу test.htm (рис. 5.8, праве вікно). Повторення цієї посилання буде лише перезавантажувати дані у вікні "D".


Мал. 5.8. Приклад вікон взаємодіючих фреймів

Виконаємо перехід по другій посиланням. Утворюється нове вікно без імені, в яке завантажиться файл frame.htm, що визначає два фрейми з іменами "С" і "D" (рис. 5.8, нижнє вікно). В обох фреймах нічого немає (точніше завантажений порожній документ empty.htm). Звернемо увагу, що тепер є відкрите вікно з ім'ям "D" і вікно з фреймами, один з яких також має ім'я "D". Виконаємо знову перехід по першій посиланням. На відміну від першого випадку завантаження даних буде здійснюватися не в вікно "D", а у фрейм з ім'ям "D". Результат усіх описаних дій показаний на рис. 5.8.

Примітка

Поява відкриваються вікон і їх вміст може іноді залежати навіть від порядку дій користувача. Робота з документами, поведінка яких важко передбачувано, зазвичай викликає справедливе роздратування користувача і говорить про недостатню продуманість структури даних розробниками.

Якщо ж змінити порядок дій, т. Е. Спочатку виконати другу посилання, а потім першу, то вікно з ім'ям "D" взагалі не з'явиться! Це відбудеться тому, що після реалізації другого заслання утворюється фрейм з ім'ям "D" і для першої посилання не буде потреби відкривати нове вікно.

Цей приклад зовсім не є зразком для наслідування, а лише показує можливу складність організації взаємодії. Навпаки, потрібно намагатися без особливої \u200b\u200bпотреби не ускладнювати організацію даних, тим більше не створювати ситуацій, в яких результат змінюється в залежності від порядку дій користувача.

Порада

Уникайте колізій в іменах фреймів і вікон. Хоча формально не заборонено мати фрейми з однаковими іменами, проте це може призвести до плутанини.

попередження

Імена фреймів і вікон порівнюються з урахуванням регістру символів. Так, наприклад, фрейми з іменами "frame_1" і "Frame_1" будуть різні.

Приклади більш складної взаємодії між фреймами

Вище були розглянуті досить прості типові приклади взаємодії між фреймами. Були розглянуті завдання створення нових вікон, заміни вмісту окремих фреймів, а також видачі документа в повне вікно з руйнуванням всієї структури фреймів. Наведені приклади використання задаються імен фреймів, а також зарезервованих імен "_blank", "_self" і "_top". Використання останнього зарезервованого імені "_parent" більш складно і буде описано нижче.

В даному розділі будуть розглянуті більш складні варіанти взаємодії між фреймами. Зокрема, буде реалізована заміна вмісту декількох суміжних фреймів.

Одним з найбільш часто зустрічаються варіантів застосування фреймів, який вже згадувався в цьому розділі, є випадок двох фреймів, один з яких містить список посилань, а в інший завантажуються самі документи (рис. 5.1).

Спробуємо розширити постановку задачі. Нехай необхідно відображати на екрані вміст досить великого документа, що складається з розділів, поділених на розділи. Типовим прикладом служить технічна література з якоїсь тематики. Наведемо бажане уявлення такого документа на екрані. Розіб'ємо екран на три фрейми, в одному з яких буде розташовуватися список глав книги, у другому - перелік розділів обраної глави, а в третьому - текст, обрана Вами. При виборі посилання в другому фреймі має змінюватися вміст третього фрейму. Реалізація цієї вимоги тривіальна. При виборі посилання в першому фреймі має одночасно змінюватися вміст як другого, так і третього фрейму. На перший погляд реалізація цього завдання на мові HTML неможлива (без застосування програмування на мові JavaScript або ін.), Так як при виконанні посилання завантажується тільки один документ, а не два чи більше. Проте, рішення даного завдання цілком можливо.

Покажемо можливу схему вирішення такого завдання на простому прикладі. Нехай потрібно відобразити на екрані три фрейми і завантажити в них деякі документи. Поставимо задачу створити в кожному з цих фреймів посилання, реалізація яких, наприклад, міняла місцями вміст двох фреймів. Нехай перший фрейм займає 50% ширини вікна і 100% висоти і розташовується з лівого боку вікна. Права половина вікна ділиться по горизонталі також навпіл і містить два інших фрейма. Така структура описується наступним кодом:

За допомогою даного HTML-коду буде створена необхідна структура, однак рішення поставленого завдання неможливо. Необхідно винести вкладену структуру в окремий файл, а в даному HTML-коді описати фрейм, який посилається на створений файл. Тоді текст вихідного документа матиме вигляд:

Приклад взаємодії між фреймами

Створений файл з вкладеною структурою має ім'я 1_2.htm і містить наступний код:

1-2

На перший погляд зовсім нічого не змінилося. В обох випадках є три фрейми, в які завантажуються документи left.htm, 1.htm і 2.htm відповідно. Однак при взаємодії фреймів відмінність проявиться. Якщо в першому випадку ні у одного з фреймів немає фрейма-батька, то в другому випадку для двох фреймів батьківським буде фрейм з ім'ям "Two_Frames". Тому якщо в будь-якому з двох фреймів застосувати посилання зі значенням параметра TARGET, рівним "_parent", то результат буде різним для першого і другого випадку. Для першого випадку реалізація такого посилання приведе до завантаження документа в повне вікно з заміщенням існуючої структури фреймів. Тут проявляється властивість значення "_parent", яке за відсутності фрейма-батька діє як "_top". У другому випадку буде заміщений фрейм з ім'ям "Two_Frames", який займає праву половину екрана і по суті складається з двох фреймів.

Другий випадок формально відрізняється від першого також наявністю фрейму з ім'ям "Two_Frames", до якого можуть бути звернені посилання. Якраз ця особливість і дозволить нам вирішити поставлену задачу.

Наведемо вміст файлу left.htm, який спочатку завантажується в перший з розглянутих фреймів:

лівий фрейм

документів в двох фреймах, розташованих в правій частині вікна.

Виберіть варіант розташування документів:

1 _2.htm "TARGET \u003d" Two_Frames "\u003e Варіант 1-2

2-1<TITLE> </p> <p></HEAD> </p> <p><FRAMESET ROWS="*,*"> </p> <p><FRAME SRC="2.htm"> </p> <p><FRAME SRC="1.htm"> </p> <p></FRAMESET> </p> <p></HTML> </p> <p>Зауважимо, що текст файлів 1_2.htm і 2_1.htm відрізняються тільки порядком посилань на файли 1.htm і 2.htm.</p> <p>Розглянемо тепер побудову документа, завантаженого в лівий фрейм. У ньому є два посилання з параметром TARGET \u003d "Two_Frames". Реалізація будь-який з цих посилань створює на місці розташування фрейму "Two_Frames" (це права половина екрану) два фрейми із завантаженням документів 1.htm і 2.htm в тому чи іншому порядку. Таким чином при виборі варіанта 1-2 в верхній правий фрейм завантажується документ 1.htm, а в нижній правий - 2.htm. При виборі варіанту 2-1 порядок документів змінюється. В результаті почерговий вибір варіантів створює враження того, що документи в двох фреймах міняються місцями. Саме такого ефекту ми і прагнули досягти (рис. 5.9).</p> <p>Вміст документів 1.htm і 2.htm для описаного прикладу не має значення. Проте, для прикладу, замість тривіальних документів створимо документи з посиланнями, які реалізують ті ж дії.</p> <p>Текст файлу 1.htm:</p> <p><HTML> </p> <p><HEAD> </p> <p><TITLE>документ 1

документ 1

Варіант 1 -2

варіант 2-1

Файл 2.htm відрізняється від 1.htm тільки заголовком.

Тут є два посилання із значенням TARGET \u003d "_ parent", які звернені до батьківського кадру. Ці посилання могли б бути записані і з явним зазначенням імені фрейму-батька, т. Е. TARGET \u003d "Two_Frames", проте використання неявного вказівки імені зазвичай більш зручно. Наприклад, якщо з лівого фрейму (документ left.htm) виключити посилання, то можна було б опустити ім'я фрейма "Two_Frames", заданий при описі основний фреймової структури. При цьому був би створений фрейм без імені, але посилання з документів 1.htm і 2.htm зі значенням TARGET \u003d "_ parent" як і раніше працювали б правильно.

Порада

По можливості використовуйте неявне вказівку імен фреймів. Наприклад, "parent", "top", "self" замість завдання конкретних імен.


Мал. 5.9. Вікна взаємодіючих фреймів з ефектом зміни завантажуються документів

Різниця між фреймами і вікнами браузера

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

Однак між фреймами і вікнами є істотна різниця. При фреймовой організації поділ області перегляду на фрейми виконує сам HTML-документ, вказуючи розміри і їх розташування. Користувач при перегляді може змінити розміри фреймів, якщо це не заборонено в описі їх структури. Розташування вікон визначено загальними правилами роботи з системою Windows - користувач може відчинити будь-яке вікно на весь екран, згорнути його в піктограму або довільним чином задати розміри і розташування. Вікна, на відміну від фреймів, можуть перекриватися. Таке багатство вибору має свій зворотний бік - необхідно кожен раз вручну розташовувати вікна на екрані і змінювати їх розміри для досягнення оптимального варіанту перегляду. У разі фреймів оптимальний варіант співвідношення розмірів зазвичай задається розробником в описі фреймової структури і часто не потребує зміни.

Порада

Хоча фрейми і не можуть надати всіх можливостей роботи з окремими вікнами, їх раціональна організація створить для користувача максимум зручностей.

Роботі з вікнами властиві і інші недоліки. Створення кожного вікна вимагає чимало пам'яті. По суті в Netscape кожне вікно є ще одну копію браузера і забезпечено повним набором кнопок і меню. Та ж ситуація характерна і для Microsoft Internet Explorer.

Зауважимо, що організація окремих вікон в браузерах виконана по-різному. Створення нового вікна з документом призводить до появи окремого завдання в системі Windows, в чому можна переконатися при перегляді списку запущених завдань. Тому перемикання між вікнами може виконуватися так само, як і перемикання між різними завданнями, Наприклад, натисканням сполучення клавіш +.

У багатьох популярних Windows-додатках існує поняття вікна з документом (document window). Як приклад можна привести текстовий процесор Microsoft Word або програму роботи з графічними зображеннями Paint Shop Pro і багато інших. У кожному з таких додатків допустимо одночасне використання декількох вікон з даними і, як правило, існує меню Window, в якому наводиться список вікон і дається можливість перемикання між ними. Освіта нового вікна в таких додатках зазвичай відбувається при відкритті існуючого файлу або створення нового. Однак в цих програмах при створенні нового вікна не утворюється нова працююча завдання.

В Netscape також є меню Window, в якому наводиться список існуючих вікон. (В версіях Netscape 4.x ця можливість надається пунктом Window меню Communicator.) Повернемося до рис. 5.8. У цьому прикладі одночасно відкрито три вікна, кожне з яких по суті є окремим браузером. Однак для користувача все вони є вікнами одного браузера, які можуть взаємодіяти один з одним. У будь-якому з цих вікон можна відкрити меню Window і побачити список трьох вікон. На рис. 5.10 показана ситуація, коли це зроблено для нижнього вікна.


Мал. 5.10. Відкриття вікон фреймів в браузері Netscape

Кожне з вікон може бути закрито окремо (командою Close з меню File). Для завершення роботи з браузером в будь-якому з вікон можна відкрити меню File і виконати пункт Exit (рис. 5.11).

Якщо при цьому було відкрито кілька вікон, то всі вони будуть закриті, але перед цим з'явиться попередження (рис. 5.12).

Кожне вікно браузера може мати свої установки (правда не всі). Подивіться на рис. 5.11. Відкрито два вікна, одне з яких розбито на три фрейми. У два з трьох фреймів, а також в окреме вікно завантажений один і той же документ. Можливість незалежної настройки параметрів кожного вікна дозволяє по-різному відображувати один і той же документ. У наведеному прикладі розмір шрифту документа в одному вікні більше, ніж в іншому. Такий ефект досягнутий установкою різних кодувань кожного з вікон (пункт Document Encoding меню Options або пункт Character Set меню View для версії 4.x), причому обидві кодування використовують один і той же шрифт, але різного розміру. Зміна ж будь-якого пункту меню General Preferences впливає на всі вікна.


Мал. 5.11. Завершення роботи з браузером Netscape

Мал. 5.12. Попередження про закриття вікон в браузері Netscape

Додаткові можливості браузерів

Всі перераховані вище теги опису фреймів з відповідними параметрами практично однаково реалізовані в браузерах Netscape і Microsoft Internet Explorer, однак кожен з цих браузерів дозволяє додатково використовувати свої унікальні теги або параметри.

Можливості браузера Netscape

Браузер Netscape, починаючи з версії 3.0, дозволяє використовувати три додаткові параметри: BORDER, FRAMEBORDER і BORDERCOLOR. Параметр BORDER застосовується тільки в тезі . Значення параметра BORDER визначає товщину рамок між фреймами в пікселах.

Параметр FRAMEBORDER може застосовуватися як в тезі , Так і в тезі і визначає наявність рамки між фреймів. Цей параметр може приймати значення Yes або NO. Якщо параметр записаний в тезі , То його дія поширюється на всі фрейми цієї групи. Для окремого фрейма значення може бути перевизначити. За замовчуванням приймається значення Yes.

Зауважимо, що параметри BORDER і FRAMEBORDER працюють незалежно один від одного. Наприклад, якщо в якості значення FRAMEBORDER задано NO, а для BORDER задано значення, відмінне від нуля, то рамка між фреймами вимальовуватися не буде, але місце під неї, певне значенням параметра BORDER, все одно буде відведено.

Параметр BORDERCOLOR може застосовуватися як в тезі , Так і в тезі і визначає колір рамки, який може здаватися назвою кольору або його шістнадцятковим поданням.

Наведемо приклад:

Перший рядок цього HTML-коду задає три фрейми, між якими залишено місце під рамку товщиною 10 пікселів (рис. 5.13).


Мал. 5.13. Промальовування рамок між фреймами в браузері Netscape

Між вікнами фреймів "А" і "в" рамка промальовується завдяки значенню NO параметра FRAMEBORDER, проте для рамки визначено червоний колір (red). Для останнього фрейму "з" значення FRAMEBORDER задано рівним Yes і перевизначає значення, встановлене в першому рядку. Тому між фреймами з іменами "в" і "С" все-таки буде намальована рамка червоного кольору і товщиною 10 пікселів.

Примітка

Якщо рамки між Кадр не промальовувалися, то браузер Netscape не дозволить змінювати розміри фреймів шляхом перетягування рамок мишею навіть при відсутності параметра NORESIZE. Для Microsoft Internet Explorer ситуація інша.

Зауважимо, що фрейми без рамок використовуються не так вже й рідко. Слід пам'ятати, що відсутність рамок не забороняє появу смуг прокрутки (рис. 5.14).


Мал. 5.14. Смуги прокрутки у фреймі без рамок

Можливості браузера Microsoft Internet Explorer

Браузер Microsoft Internet Explorer дозволяє використовувати параметр FRAMEBORDER для тих же цілей, як було описано вище, але не дозволяє задавати колір і товщину рамок. Однак в якості значення параметра FRAMEBORDER допустимо використовувати тільки числове значення "О" для скасування промальовування рамки або відмінне від нуля числове значення для промальовування рамки.

Різниця в правилах завдання значень параметра FRAMEBORDER для різних браузерів досить неприємно. Спробуйте, наприклад, поставити FRAMEBORDER \u003d Yes. Такий запис вірна для Netscape, а для Microsoft Internet Explorer призведе до відсутності рамки. Попередній приклад (рис. 5.13) при перегляді в Microsoft Internet Explorer буде представлений без рамки.

Порада

Можна рекомендувати завжди записувати значення параметра FRAMEBORDER в числовому вигляді, наприклад, FRAMEBORDER \u003d 0. Це відповідає правилам запису параметра для Microsoft Internet Explorer, але порушує правила для Netscape (хоча і вірно сприймається останнім).

Примітка

Якщо рамки між Кадр не промальовувалися, то браузер Microsoft Internet Explorer (на відміну від Netscape) при відсутності параметра NORESIZE дозволить "навпомацки" змінювати розміри фреймів шляхом перетягування рамок мишею. Спіймати місце, де повинна знаходитися рамка, можна по зміні форми покажчика миші.

Браузер Microsoft Internet Explorer дозволяє використовувати додатковий параметр FRAMESPACING, записується в тезі , Значення якого визначає кількість пікселів між фреймами, що залишається порожніми.

Наведемо приклад, результат відображення якого наводиться на рис. 5.15.

Зміна відстані між фреймами


Мал. 5.15. Порожній простір між фреймами в Microsoft Internet Explorer

Примітка

На жаль, у багатьох описах мови HTML помилково вказується, що параметр FRAMESPACING повинен використовуватися в тезі . Microsoft Internet Explorer допускає використання цього параметра тільки в тезі .

плаваючі фрейми

Браузер Microsoft Internet Explorer дозволяє використовувати унікальний тег . У ТЕГС

Браузер Microsoft Internet Explorer - перший з браузерів (і поки єдиний), який підтримує так звані "плаваючі" фрейми.

Такі фрейми можуть розміщуватися в будь-якому місці екрану так само, як графічні зображення і таблиці.

Фрейм праворуч від даного тексту розміщений на сторінці за допомогою спеціального тега обов'язковий!

атрибути

  • ALING. Визначає вид вирівнювання. Приймає значення "left", "center", "right".
  • HEIGHT. Визначає висоту фрейму в пікселях
  • WIDTH. Визначає ширину фрейму в пікселях.
  • SRC, MARGINWIDTH, MARGINHEIGHT, SCROLLING, FRAMEBORDER, BORDER, BORDERCOLOR, NAME. Аналогічні розглянутим раніше.
  • vspase. Встановлює поля зверху і знизу з зовні від iframe
  • hspase. Встановлює поля сбоков з зовні від iframe
  • marginwidth. Визначає величину відступів по лівому і правому краях всередину iframe-а; має дорівнювати або більше 1.
  • marginheight. Визначає величину відступів по верхньому і нижньому краях всередину iframe-а; має дорівнювати або більше 1.
  • scrolling. Вказує буде-ли виводиться лінійка прокрутки в iframe; значення value може бути "yes," "no," або "auto". Значення за замовчуванням для звичайних документів - auto.
  • title. Текст підказки.

    тег </h3> <p>Визначає, що буде показано у вікні браузера якщо він не підтримує фрейми.</p><p> <NOFRAMES> Ваш браузер не підтримує плаваючі фрейми!

    Як завантажити фрейм без додаткових файлів?

    Щоб завантажити фрейм без використання зовнішніх файлів, необхідно покласти в змінну HTML-код фрейму, а потім в якості SRC тега

    Проблема адресного рядка при фреймової структурі сайту

    При використанні фреймів на сайті використовується одна сторінка, яка вказує місце розташування фреймів.

    Наведемо приклад такої сторінки:

    ...

    Після завантаження цієї сторінки відбувається завантаження інформації у фрейми. Усередині цих фреймів відбуваються всі переходи користувача по сторінках сайту. В адресному рядку завжди відображається тільки шлях до стартової сторінки, Який не змінюється при переходах. Відвідувач не знає, де він знаходиться в наразі.

    Якщо відвідувач відразу потрапляє не на головну сторінку сайту (наприклад, з пошукача), то це не призводить до відтворення загальної структури фреймів. Це є причиною того, що власник сайту не може вказати адресу на внутрішню сторінку сайту.

    Є кілька рішень цієї проблеми

    Раніше бал розглянуто приклад фреймової структури. будемо розглядати різні способи вирішення цієї проблеми саме на ньому.

    Ідея полягає в наступному: при завантаженні сторінки, що містить інформаційну частину, будемо перевіряти оточення сторінки і, якщо необхідна фреймова структура відсутня - створимо її за допомогою скрипта.

    Можливі три випадки:

    1. відвідувач зайшов на сторінку, яка містить фреймової структуру;
    2. відвідувач зайшов на одну з інформаційних сторінок;
    3. відвідувач потрапив на сторінку з навігаційним меню.

    У першому випадку після виконання перевірки ніяких дій не потрібно. Другий і третій практично ідентичні, тому далі будемо розглядати тільки другий випадок.

    І так, відвідувач потрапляє "куди не треба". У самий початок сторінки вставляємо скрипт, який буде створювати фреймової структуру.

    Реалізація рішення можлива як на стороні клієнта, так і на стороні сервера. Основний недолік реалізації на стороні клієнта очевидний - залежність від можливостей і налаштувань клієнта. Наприклад, на комп'ютері користувача заборонено виконання скриптів. Другий варіант не буде працювати, якщо на сервері немає підтримки PHP.

    JavaScript-рішення.

    При такому підході є обмеження - не всі браузери підтримують JavaScript, А в ряді випадків користувачі самі відключають скрипти.

    Спочатку перевіряємо оточення сторінки, а потім, в разі відсутності необхідної фреймової структури, створюємо її.

    створимо файл frame.js :

    If (window.name! \u003d "Main") (window.name \u003d "root"; document.write ( " "); Document.write (" "); Document.write (" "); Document.write (""); }

    Спочатку ми перевіряємо назву вікна, в який завантажується сторінка: if (window.name! \u003d "main"). Якщо ім'я вікна і назва фрейма не збігаються, значить треба створити фреймову структуру. Це робиться динамічно з використанням методу write об'єкта document.

    До кожній сторінці сайту підключаємо файл frame.js . Тепер сторінки сайту будуть мати таку структуру:

    ... ...

    При такому підході до вирішення даного завдання зникає необхідність у файлі, що містить фреймової структуру.

    PHP-рішення

    При такому підході сайт стане доступним більшій кількості відвідувачів.

    Перевіряти оточення сторінки будемо по іншому (не так, як при використанні JavaScript). Завантаження документа у фрейм будемо виконувати з параметром frames \u003d yes. При відкритті сторінки перевіряємо цей параметр, і в разі потреби динамічно створюємо фреймової структуру. Нижче наведено код, який за це відповідає.

    Розміщуємо код в файл frames.php . Тепер необхідно підключити його до кожної сторінки сайту. Нижче наведено приклад такої сторінки.

    frames require ( "frames.php"); ?> ...

    В даному випадку, як і при реалізації на стороні клієнта немає необхідності окремо створювати HTML документ, що описує фреймової структуру.


    .


  • Фрейми - це 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 \u003d "image.gif". Зверніть увагу, що елемент використовується без закриває тега.
    всередині контейнера можуть міститися тільки теги або інший набір фреймів, охоплений тегами і .
    тег має наступні атрибути:

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

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

    • cols \u003d "20%, 80%" - вікно браузера розбивається на дві колонки за допомогою атрибута cols, Ліва колонка займає 20%, а права 80% вікна браузера.
    • rows \u003d "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> розрізняються для <a href="https://newtravelers.ru/uk/setting/kak-vklyuchit-faily-kuki-v-internet-eksplorer-kak-vklyuchit-cookies-v.html">різних браузерів</a>. Щоб вирішити цю проблему використовуйте двічі атрибут <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>\u003d "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 \u003d "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>

    плаваючі фрейми

    елемент

    Що таке фрейми?

    Щоб зробити сайт більш функціональним, розмістити велику кількість інформації і посилань в найбільш зручною для відвідувача формі, зовсім необов'язково використовувати flash-технології. Все це можливо силами мови html, на якому можна створити фрейми.

    Говорячи обивательським мовою, фрейми - це додаткові смуги прокрутки в одному вікні. Потрапляючи на сайт, відвідувач бачить на одній і тій же сторінці як би відразу два вікна - один, як правило, з пунктами меню чи іншої важливої \u200b\u200bінформації, а інший - з контентом (текстом, цінами і т.д.). В цьому випадку відвідувач може з великою зручністю переглядати досить об'ємні сторінки і мати перед очима найважливішу інформацію одночасно.

    Якщо заглибитися в деталі, то сторінка з фреймами полягає, як мінімум, відразу з трьох html-сторінок - двох видимих \u200b\u200bкористувачеві і однієї службової (координуючої показ фреймів). Видимі сторінки і є фреймами, на які можна потрапити і окремо, і одночасно.

    Безсумнівно, важливою перевагою використання фреймів є висока якість юзабіліті. Інтерфейс сторінки стає в рази зручніше, ніж при використанні стандартних способів розмітки.

    Свого часу, 5-6 років тому, фрейми завоювали популярність серед багатьох вебмайстрів. Сьогодні вони використовуються тільки на тих сайтах, де без них обійтися просто неможливо, так як, на жаль, фрейми мають істотні недоліки в плані просування.

    Фрейми - добре чи погано?

    Розглядати корисність фреймів можна з трьох позицій - з позиції користувача, з позиції seo-фахівця і вебмастера.

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

    З іншого боку, вони не дуже-то і покращують дизайн сторінки. Досить складно домогтися гарного зовнішнього вигляду, якщо використовуються фрейми. І, звичайно, далеко не всі браузери підтримують фрейми, що може відштовхнути цілу армію потенційних покупців, клієнтів або просто відвідувачів.

    З позиції вебмастера використання фреймів полегшує складання сторінок і доведення до розуму інтерфейсу. Адже куди простіше створити одну сторінку з усім меню та іншою важливою інформацією, ніж вміщати цей контент на кожну сторінку сайту. Втім, на цьому спрощення закінчуються і починаються складності, про які неспеціалісту знати необов'язково. Тим більше, що зараз вже майже ніхто з чистим html не працює - CMS дозволяють робити все автоматично.

    Позиція seo-фахівця куди більш жорстка. Фрейми просто не пропускають пошукових роботів далі головної сторінки. Звичайно, існують деякі хитрощі, які дозволяють індексувати і внутрішні сторінки сайту, проте все ж це саме «хитрощі», які не схвалює ні одна пошукова система.

    Вплив фреймів на розкрутку сайту.

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

    Отже, як і чим впливає використання фреймів на розкрутку?

    Вплив це серйозне. Справа в тому, що саме на фреймах розташовані всі важливі посилання на внутрішні сторінки сайту. І для того, щоб їх прописати, верстальщику не потрібно використовувати теги . А саме з цього тегу пошукової робот і визначає, що перед ним - посилання, по якій можна зайти на іншу сторінку і проіндексувати її (або додати до її посилальному вазі ще пару «хлібних крихт»).

    Пошуковими роботами індексується тільки перша - головна - сторінка, на яку вони потрапляють з сторонніх ресурсів. Інші сторінки залишаються закритими для Яндекса і Гугла - адже навіть з інших сайтів на них неможливо поставити посилання через те, що фрейми приховують справжні адреси сторінок.

    Просувати ефективно одну головну сторінку сьогодні вже неможливо - на ній неможливо вказати всі запити, та й ПС буде куди підозріліше ставитися до такого «одностранічнік».

    Звичайно, «народні умільці» вже придумали спосіб проіндексувати внутрішні сторінки, поставивши посилання на них в інсталяційний документ фреймів, та й адреси все-таки можна дізнатися, відкривши сторінку фрейма окремо. Але чи потрібні всі ці складності, якщо, відмовившись від таких технологій, можна домогтися більшого?

    Термін «фрейм» прийшов до нас з англійської мови. У перекладі це слово означає «рамка» і являє собою окрему область вікна. За своєю структурою така ділянка є повністю закінченим HTML-документом.

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

    Історія технології

    Сьогодні можна констатувати, що рішення про відхід від роботи з фреймовой технологією остаточно прийнято. На сайті https://www.w3.org/TR/html5-diff/#obsolete-elements чітко вказано, що звичайні теги для створення такої структури frame, frameset і noframes є застарілими. Як аргумент наводяться дані про те, що використання такої структури негативно відбивається на юзабіліті сайтів і їх доступності в мережі.

    Але сучасні технології підтримують елемент IFRAME. Його використання дозволяє вставляти фрейми в текстові блоки на сторінках. При цьому такі елементи мають можливість вирівнювання щодо самого тексту. Важливий момент: Змінювати розміри вбудованих фреймів не можна в принципі. У них відсутній відповідний атрибут для зміни розмірів.

    В майбутньому без стрибкоподібних змін технології подальше застосування фреймів малоймовірно. І варто пам'ятати, що провідна організація по стандартизації інтернет-технологій - W3C - явно вказала на те, що такі структури не повинні використовуватися розробниками сайтів.

    Тобто фрейми в принципі не повинні застосовуватися для структури сторінок при створенні нових ресурсів. А ось за підтримки і доопрацювання наявних сайтів знання особливостей технології та їх використання буде дуже корисним і продуктивним.

    переваги фреймів

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

    Застосування фреймів забезпечує економію на обсязі переданого трафіку в процесі роботи з сайтом. Адже при зверненні до іншого розділу інформації зазвичай відбувається оновлення тільки однієї ділянки сторінки, а не всього її коду.

    Така структура забезпечує цікаві можливості навігації по контенту ресурсів. Адже всередині вікна браузера в сусідніх фреймах можна переглядати різні інформаційні блоки. Для користувачів важливо знати, що пошук по кадру рівнозначний виконання такої операції на окремій сторінці.

    У процесі роботи з сайтом можна динамічно змінювати розміри окремої ділянки, Що важко реалізувати з використання інших технологічних рішень.

    можливі недоліки

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

    1. Незадовільний юзабіліті. Сьогодні частка користувачів мобільних пристроїв і планшетів з невеликим розміром екрану зростає і вже перевищує число тих, хто відвідує сайти зі стаціонарних комп'ютерів і ноутбуків. І тут застосування фреймів створює серйозні проблеми з адаптивністю сторінок при їх відображенні на різних пристроях. Ця проблема на сьогодні практично не має рішення.
    2. Погіршення доступності сайту для різних програм. Збільшення кількості додаткових програм (наприклад, екранні диктори) виявляє набагато гіршу доступність інформації для зчитування.
    3. Неправильне відображення сторінок. Часто верстка сторінок з такою структурою виглядає в браузерах некоректно з точки зору дизайну. І це пов'язано з особливостями технології. З точки зору SEO використання фреймів в html-верстки сторінки дуже небажано.
    4. Наявність єдиного адреси для всієї структури. В результаті внутрішні сторінки такого сайту неможливо додати в закладки. Це призводить до незручностей у роботі користувачів.
    5. Некоректна індексація пошуковими системами. Наявність на сайті кількох повноцінних документів, з яких формується одна сторінка, помітно ускладнює роботу пошукових систем. Це призводить до суттєвих помилок при індексації. Як наслідок - неправильне визначення тематики і адрес сторінок, випадання критично важливого контенту з індексації.
    6. Непрестижність. Це досить незвичайний недолік для ресурсів в мережі. І все ж потрібно сказати, що факт старіння верстки сайтів на фреймах призводить до того, що автори і власники таких ресурсів вважаються ретроградами. Але є окремі винятки. Навіть сучасні сайти, в яких розміщуються чати, зазвичай використовують роботу з кадрами.

    Індексування фреймів пошуковими системами

    Інформація, яка надходить з пошукових систем, однозначно говорить нам, що сайти з фреймами індексуються помітно повільніше. При цьому часто виникають помилки, пов'язані з самою структурою. Адже в кожному з фреймів відображається повноцінна інтернет-сторінка. І в базу індексації може потрапляти саме така частина сайту.

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

    Ще одна проблема полягає в тому, що часто основна сторінка контейнерної структури містить тільки заголовок, опис метатегов і тег FRAMESET. І це начебто логічно - адже осмислене зміст розміщується в окремих документах. Саме їх відвідувач сайту побачить на сторінці в рамках.

    Але ось пошуковий робот таку сторінку практично ніколи не індексує. Він не знаходить на ній вмісту, корисного для відвідувачів. Пошукові боти налаштовані таким чином, що вони намагаються отримати і проіндексувати інформацію, розміщену всередині тега body. Саме там відбувається пошук корисного для користувача контенту. А на фреймовой сторінці такого тега немає, він замінюється на FRAMESET.

    Частково цю проблему можна вирішити із застосуванням NOFRAMES. Але на багатьох сайтах при зверненні до нього віддається тільки інформація про те, що браузер не підтримує фрейми. І для перегляду сторінки потрібно використовувати іншу програму.

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

    Особливо важко пошуковим системам і індексує ботам обробляти вкладені і множинні кадрові структури. Той факт, що кожен контейнер має всі ознаки окремого документа, але не містить повноцінну навігаційну та іншу інформацію, додатково ускладнює ситуацію.

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

    Досвід багатьох оптимізаторів і веб-майстрів також говорить про те, що сторінки на фреймах не отримують високих місць в пошуковій видачі. Це відбувається навіть у тому випадку, якщо вони потрапляють в базу індексації.

    Особливості просування сайтів у фреймах

    Деякі системи пошуку неправильно або дуже некоректно індексують файли з фреймової структурою. В результаті індексна база заповнюється не адресами батьківських ресурсів (так, як повинно було бути), а посиланнями на дочірні сайти.

    Щоб мінімізувати проблеми індексації сайтів, заснованих на фреймах, при їх описі застосовуються спеціальні теги і параметри. Основним елементом контейнерної структури є frameset. Саме він замінює в вихідному коді стандартний body ;. Кожен окремий контейнер в структурі описується frame. Його кількість в коді сторінки відповідає числу окремих ділянок, які відображаються у вікні браузера при перегляді.

    Зазначені теги варто розташувати на головній сторінці сайту, а потім продублювати зміст всередині кожного з них.



    Сподобалася стаття? поділіться їй