Фреймы (от слова frame - кадр, окно) были придуманы достаточно давно и уже завоевали большую популярность. Все полюбили их за то, что они помогают разделить рабочее пространство окна браузера на любое количество частей разных размеров. В каждую такую часть потом можно будет загрузить собственную страницу.
Для создания фреймов создается отдельный файл, который при загрузке сделает разбиение окна, и подскажет браузеру где взять содержимое каждой ячейки.
Разбиение задается с помощью тега <frameset>, используемого вместо <body>. У него есть следующие атрибуты :
Для начала пример:
<frameset cols=100,10%,*> .... </frameset>Разбить окно можно на очень большое количество областей. После знака "=" указываются все размеры этих областей через запятую. Размер области может задаваться тремя способами: непосредственный размер в пикселах, размер в процентах от размера окна и произвольный. Именно так у меня указано в примере. В данном случае окно разделится на 3 вертикальные части, первая будет 100 пикселов в ширину, вторая 10% от размера окна, а размер последней будет зависеть от размеров предыдущих, т.е. ей останется все остающееся до полного размера окна.
Теперь важно указать страницы, которые будут загружаться во все области. Для этого предназначен тег <frame>, который должен находится внутри раздела <frameset>. У него также есть свои параметры.
Теперь примерчик покрупнее, уже работоспособный:
<html> <frameset cols=100,* border=0> <frame name="menu" src="menu.html" noresize scrolling=no> <frame name="mainframe" src="title.html" scrolling=auto> </frameset> <noframes> <p>Sorry, your browser don't support frames mode. <br>Change Browser and come again !!! </noframes> </html>В этом примере мы разбиваем окно на 2 вертикальные части, и занружаем в них два соответствующих файла.
Раньше, когда я еще плохо знал фреймы, чтобы еще раз разбить фрейм я создавал второй файл, и загружал его. Но вскоре обнаружилось, что теги <frameset> могут быть вложенными. Таким образом разбивание стало для меня еще более простым.
Пример:
<html> <frameset cols=100,* marginwidth=0 marginheight=0> <frameset rows=100,* border=0> <frame name=left_up src=leftup.html noresize scrolling=no> <frame name=left_down src=leftdown.html scrolling=yes> </frameset> <frame name=right src=right.html scrolling=auto> </frameset> <noframes> HE-HE-HE !!! You have COOL Browser !!! </noframes> </html>
В этом примере будут создаваться две колонны, и при этом левая разобьется еще на две части. Я постарался подобрать нормальные имена, чтобы все было ясно.
А для этого мы как раз и присваивали каждому фрейму свое уникальное имя. Теперь настало время им воспользоваться !!!
Итак, чтобы загрузить страничку в определенном фрейме надо при описании ссылки воспользоваться атрибутом target, в котором как раз и указать имя требуемого фрейма.
Пример:
<a href="left.html" target="left1">А эта ссылка загрузится во фрейме с именем left1 !!!</a>
Для того, чтобы обеспечить большую гибкость при работе с фреймами существуют несколько зарезервированных браузером имен, которые вы не можете использовать. Это имена _blank, _top, _self, _parent.
_top, _parent - эти имена используется для загрузки страницы в этом же окне, но при этом все предыдущие фреймы удаляются.
_self - это имя для загрузки страницы в этом же фрейме, но естественно его можно по умолчанию не указывать.
_blank - для загрузки страницы создается новое окно.
Фреймы очень помогают при создании хорошей навигации, т.к. не приходится много раз переписывать один и тот же код с кнопками и другими элементами. А также не придется сто раз загружать тоже самое. Для этого делаете один фрейм с ссылками (кнопками), а другие для оформления и загрузки страниц. Это намного проще.