Фрейми
Один із способів видати відразу декілька файлів HTML на екран користувача - Це відкрити кілька вікон браузера. Другий шлях полягає в тому, щоб розбити вікно на декілька розділів. Ці розділи називаються фреймами або кадрами. У кожному фреймі показується свій HTML-документ. Кожен фрейм може мати свої смуги прокрутки, посилання, графічні зображення і т. д. Фрейми можуть функціонувати незалежно або впливати один на одного, використовуючи посилання, що вказують на інші фрейми.
Контейнер <FRAMESET>
Web-сторінка, яка розділена на фрейми, називається документом групи фреймів. Документи групи фреймів містять стандартний заголовок, що задається тегом HEAD, але на відміну від стандартних HTML-документів, вони не містять тега BODY. Замість нього використовується контейнер (тобто парний тег) <FRAMESET>, який застосовується для визначення рядків і стовпців окремих фреймів, кожен з яких позначається тегом <FRAME>.
Якщо включити контейнер BODY у документ, де використовується контейнер FRAMESET, то кадри будуть проігноровані програмою перегляду, та інформація, що міститься в документах, що задаються тегами <FRAME>, не буде виведена. Буде показана тільки інформація, що міститься в контейнері BODY.
Всередині контейнера <FRAMESET>... </FRAMESET> може
розташовуватися тільки теги <FRAME> або інші контейнери
FRAMESET.
Визначення параметрів кадрів
Тег <FRAMESET> має два головні атрибути: ROWS та COLS, які задають розбиття на рядки і стовпці відповідно. Нижче наведено вигляд контейнера FRAMESET:
<FRAMESET ROWS="спісок_значеній" COLS="спісок_значеній"> ... </FRAMESET>Можна визначити будь-яке число рядів і стовпців; необхідною умовою є вказівка хоча б одного з атрибутів ROWS або COLS.
Кадр не може бути єдиним: якщо ви визначили єдиний ряд і єдиний стовпець, то програма перегляду проігнорує контейнер FRAMESET, і екран залишиться порожнім. Якщо визначені принаймні два ряди або два стовпці, інший атрибут може бути опущений (йому по замовчуванням буде присвоєно значення, рівне 100%).
Значення атрибуту ROWS або COLS представляє собою рядок, що містить список значень у пікселях, відсотках або відносних одиницях, розділених комами. Кількість рядів або стовпців кадрів визначається числом цих значень.
Приклад
Для завдання сітки кадрів з трьох рядів, висота яких 100, 240 і 140 пікселів
відповідно, використовуйте тег
<FRAMESET ROWS="100,240,140">
Завдання висоти ряду в пікселах, однак, є поганим стилем, так як при цьому не враховується той факт, що вікна браузерів можуть мати саму різну величину. В абсолютних одиницях варто вказувати розміри кадру лише для розміщення невеликих зображень, в інших же випадках краще користуватися відносними величинами.
Приклад
Тег <FRAMESET ROWS="25%, 50%, 25%">
задасть три кадри, розміром по 25%, 50% і 25% від висоти вікна браузера.
Щодо точності вказівки розмірів фреймів у відсотках можна не турбуватися: якщо сума значень не дорівнює 100%, то масштаб кадрів буде пропорційно змінено.
Завдання параметрів кадрів у відносних одиницях виглядає приблизно так:
<FRAMESET COLS="*,2*,3*">Символ * позначає пропорційний поділ вікна програми перегляду. У даному прикладі вікно буде розділено на три вертикальних кадру, перший з яких буде мати ширину в 1 / 6, другий - у 2 / 6 (або 1 / 3) і третій - в 3 / 6 (або 1 / 2) від ширини вікна браузера. Одиниця при вказівці відносних значень може бути опущена.
Вказівка значень атрибутів ROWS і COLS може бути і змішаним, що включає будь-яке поєднання абсолютних розмірів, процентних відносин і відносних значень, наприклад,
<FRAMESET COLS="100,25%,*,2*">Тут першому кадру присвоєно абсолютне значення в 100 пікселів по ширині, другого - 25% від ширини вікна. Простір, що залишився ділиться між третім і четвертим кадрами в пропорції 1 до 2.
Пріоритети у вказівках значень атрибутів такі: в першу чергу (ліворуч направо) відводиться місце для кадру з абсолютним значенням, потім - для кадру зі значенням у відсотках, і в останню чергу - для кадрів з відносними величинами.
Якщо ви користуєтеся абсолютними величинами в атрибутах ROWS та COLS, не робіть такі кадри великими - адже вони повинні поміститися у вікно браузера будь-якого розміру. Спільно з такими кадрами для кращої балансування, рекомендується використовувати хоча б один кадр, визначений у відсотках або у відносних величинах.
При визначенні обох атрибутів виходить сітка кадрів, наприклад, тег
<FRAMESET ROWS="*,2*,*" COLS="2*,*">задає сітку з трьох рядів і двох стовпців. У даному прикладі перший і останній ряди займають по 1 / 4, другий ряд - половину від висоти вікна. Перший стовпець займає 2 / 3, а другий - 1 / 3 ширини вікна браузера.
Тег <FRAME>
Тег <FRAME> визначає окремий кадр. Він повинен розташовуватися всередині контейнера FRAMESET.
Приклад
<FRAMESET ROWS="*,2*"> <FRAME> <FRAME> </FRAMESET>
Зауважте, що цей тег не є контейнером і, на відміну від тега <FRAMESET>, не має закриває тега.
Число тегів <FRAME> обов'язково має дорівнювати числу кадрів, визначених у теге <FRAMESET>. У нашому прикладі визначено два кадри, тому контейнер містить відповідне кількість тегів <FRAME>. Поки кадри нічим не заповнені.
У HTML тег <FRAME> має шість атрибутами: SRC, NAME, MARGINWIDTH, MARGINHEIGHT, SCROLLING і NORESIZE. Ось синтаксис використання цих атрибутів:
<FRAME SRC="URL" NAME="імя_окна" SCROLLING=yes | no | auto MARGINWIDTH="значення" MARGINHEIGHT="значення" NORESIZE>
Використовувати всі атрибути необов'язково. Частіше за все ви будете користуватися тільки одним атрибутом - SRC. Рядок
<FRAME SRC="URL">визначає URL-адресу вмісту кадру. Це зазвичай файл HTML-документа, розташований у тому ж каталозі, що і документ, що містить контейнер FRAMESET, наприклад,
<FRAME SRC="first.html">
Цей документ повинен бути повноцінним HTML-документом, тобто містити всі обов'язкові частини (контейнери HTML, HEAD, BODY і т. д.).
У випадку, якщо програма перегляду не зможе знайти вказаний файл, кадр не буде побудований, і браузер виведе повідомлення про помилку. Якщо ж в теге зовсім не вказаний атрибут SRC, кадр буде створений і залишений порожнім.
Текст, заголовки, графіка та інші елементи не можуть прямо включатися в документ з кадрами. Всі вони повинні вводитися лише за допомогою вказівки URL-адреси елемента. Якщо контейнер FRAMESET містить "чужорідне тіло ", воно буде виведено, а кадри повністю проігноровані.
Атрибут MARGINWIDTH=n задає розміщення ліворуч і праворуч від вмісту кадру областей вільного простору заввишки по n пікселів, MARGINHEIGHT а=n, відповідно, зверху і знизу.
Значення цих атрибутів завжди повинні вказуватися в абсолютних значеннях (Пікселях). Так, тег
<FRAME MARGINHEIGHT="5" MARGINWIDTH="7">створить внутрішню рамку на верхній і нижній межах кадру шириною в 5 пікселів, а на лівій і правій кордоні - шириною в 7 пікселів. Всередині цієї рамки дані виводитися не будуть. Ці атрибути не мають нічого спільного з рамкою кадру, яка визначається браузером, або що задається за допомогою атрибуту BORDER.
До побудованим вами кадрів автоматично додаються смуги прокрутки, якщо зміст кадру більше його розміру. Іноді це може порушити естетику сторінки, тому в HTML передбачений атрибут SCROLLING тега <FRAME>, що має наступний формат:
<FRAME SCROLLING="yes|no|auto">
Цей атрибут може приймати одне з трьох значень: yes, no і auto. Останнє значення мається на увазі за замовчуванням, тобто коли атрибут не визначений. Якщо вказано значення yes, смуга прокрутки з'явиться в будь-якому випадку, значення no забороняє поява смуги. Визначення атрибуту SCROLLING, наприклад, може бути наступним:
<FRAME SCROLLING=yes>
За замовчуванням розміри кадрів можуть легко змінюватися читачами, проте зрозуміло, що це може сильно порушити авторський задум. Тому ви, швидше за все, захочете використовувати атрибут NORESIZE тега , що забороняє можливість "перекроювання" вашої сторінки:
<FRAME NORESIZE>
Цей атрибут не має значень. Вказавши його в одному кадрі, ви тим самим забороніть змінювати розміри і всіх суміжних кадрів. Як правило, цього буває достатньо, щоб "закріпити" рамки всіх кадрів сторінки на місці.
Коли Ви захоплюєтесь рамку кадру мишею, то покажчик стає двобічної стрілки, якщо переміщення рамки можливо. В іншому випадку, тобто коли використаний атрибут NORESIZE, двонаправлена стрілка не з'являється.
Для визначення рамки кадру в HTML існують три атрибути: BORDER, FRAMEBORDER і BORDERCOLOR. Перший з цих атрибутів використовується тільки з тегом <FRAMESET> та встановлює ширину всіх рамок для всіх кадрів контейнера FRAMESET. Ця величина вказується у пікселях, наприклад,
<FRAMESET BORDER="10">
Якщо цей атрибут нульовий, то всі кадри контейнера будуть без рамок. За замовчуванням атрибут BORDER має значення 5.
Атрибут FRAMEBORDER використовується з тегами <FRAMESET> і <FRAME> і може приймати два значення: yes або no. У разі yes рамка має тривимірну форму. Якщо FRAMEBORDER="no", рамка невидима, тобто вона має колір фону вікна браузера, встановлюваного за замовчуванням.
За замовчуванням атрибут FRAMEBORDER має значення yes, тобто передбачає наявність тривимірної рамки. Рамка кадру буде невидимою, якщо значення FRAMEBORDER="no" встановлено для всіх кадрів, суміжних з ним.
Атрибут BORDERCOLOR може використовуватися з тегами <FRAMESET> і <FRAME>. Йому може бути присвоєно стандартне ім'я кольору або RGB-значення.
Приклад
<FRAMESET BORDERCOLOR="red" ROWS="*,*"> <FRAME SRC="first.html" BORDERCOLOR="#FF00FF"> <FRAME SRC="first.html"> </FRAMESET>
Тут атрибут BORDERCOLOR тега <FRAMESET> встановлює червоний колір рамок ("red"), проте такою ж атрибут тега <FRAME> скасовує це значення і визначає колір рамки першого кадру як фіолетовий. У результаті другий кадр, в якому колірної атрибут не визначений, буде мати частину рамки фіолетовою (на стороні, суміжній з першим кадром), а іншу частину рамки - червоною.
Якщо ж у двох суміжних кадрах визначені свої власні
атрибути BORDERCOLOR, то жоден з них не буде мати сили. Колір їх
рамок буде визначатися відповідним атрибутом контейнера
FRAMESET.
