Создание и раскрутка сайта - начинающим! |
|
|||||||||||||||||||||||||||||||||||||||||||
|
Язык гипертекстовой разметки
|
<html> <head> <title>фрейм</title> </head> <body> Меня зовут Вася! </body> </html> | <html> <head> <title>фрейм</title> </head> <body> А фамилия моя Пупкин. Это звучит круто! </body> </html> |
Теперь делаем третий файл, назовем его index.html (назвать можно и по другому):
<html> <head> <title>Страница с фреймами!</title> </head> <frameset cols="50%,50%"> <frame src="vasja.html"> <frame src="pupkin.html"> </frameset> </html>
Вот его-то мы и рассмотрим подробнее. Во-первых, в нем отсутствуют теги <body> и </body>. Можно сказать, их роль выполняет тег <frameset>, хотя это не совсем верно. Тег <frameset> (переводится как "набор фреймов") с атрибутом cols="50%,50%" указывает браузеру, что страница должна быть поделена на два окна (фрейма), каждый шириной в 50% от ширины страницы. Тег <frame> определяет содержимое и свойства каждого фрейма (заметьте, что он не имеет закрывающего тега). В данном случае указано, что содержимым первого фрейма является файл vasja.html, второго - файл pupkin.html (фреймы считаются слева направо и сверху вниз. Здесь - этот пример в действии (откроется в новом окне). Все просто! Еще несколько примеров:
|
Три фрейма разной ширины.<frameset cols="20%,30%,50%"> <frame src="page1.html"> <frame src="page2.html"> <frame src="page3.html"> </frameset> | |||
| Фреймы можно расположить рядами так же легко, как и столбцами. Просто меняем атрибут
cols на rows:<frameset rows="25%,75%"> <frame src="page1.html"> <frame src="page2.html"> </frameset> |
Значения атрибутов cols и rows могут выражаться не только в процентах. cols="150,*,100" - страница разделена на три столбца, где ширина левого 150 пикселов, правого - 100 пикселов, а средний столбец - это все оставшееся между ними место (знак *). Если вы будете размеры фреймов устанавливать в пикселах, то желательно ширину (или высоту) одного из них определить значком *. Можно, например, написать cols="150,550,100", и все будет выглядеть отлично на вашем мониторе с разрешением 600*800. Но стоит только изменить разрешение, и картина полностью изменится. Потому-то и рекомендуется использовать "звездочку".
|
Пример:<frameset cols="200,*,100"> <frame src="page1.html"> <frame src="page2.html"> <frame src="page3.html"> </frameset> | |||
|
Можно устанавливать пропорции для окон. В этом примере левый фрейм будет шириной в 150 пикселов,
а остальную часть страницы поделят между собой 2-й и 3-й фреймы, причем третий фрейм будет в 2
раза шире первого.<frameset cols="150,*,2*"> <frame src="page1.html"> <frame src="page2.html"> <frame src="page3.html"> </frameset> | |||
| То же, но для рядов: 2-й фрейм занимает 15% от высоты окна, а 1-й и 3-й - все остальное
в пропорции 1:3.<frameset rows="*,15%,3*"> <frame src="page1.html"> <frame src="page2.html"> <frame src="page3.html"> </frameset> |
Фреймы могут быть вложенными друг в друга. Это позволяет создавать более сложные конструкции страниц. Рассмотрим несколько примеров:
|
<frameset rows="25%,*"> <frameset cols="40%,60%"> <frame src="page1.html"> <frame src="page2.html"> </frameset> <frame src="page3.html"> </frameset> |
В этом примере окно разбито на два фрейма: верхний занимает 25% высоты, нижний - все остальное. В свою очередь верхний фрейм разбит еще на два, где левый фрейм занимает 40% от ширины окна, а правый - 60 процентов.
Еще один пример. Предположим, мы хотим сделать такую страницу: окно, состоящее из левого фрейма шириной 200 пикселов, содержащего меню, и правого с каким-то текстом. Причем в левом фрейме вверху должен быть логотип высотой в 150 пикселов, размещенный в отдельном фрейме, а в правом внизу - баннер, который при скроллинге правого окна все время будет оставаться на месте. Должно получиться следующее:
| <frameset cols="200,*"> <frameset rows="150,*"> <frame src="logo.html"> <frame src="menu.html"> </frameset> <frameset rows="*,70"> <frame src="text.html"> <frame src="banner.html"> </frameset> </frameset> |
Рассмотрим атрибуты тегов <frameset> и <frame>. Первый из них, <frameset> - парный тег, т.е. он обязательно должен иметь закрывающий тег. Может включать следующие атрибуты:
Тег <frame> может включать следующие атрибуты:
Как указывалось выше, атрибут name тега <frame> позволяет присвоить каждому фрейму свое имя, что позволяет управлять содержимым одного фрейма из другого (т.е. как в этих уроках - вы кликаете по ссылке в левом фрейме, а меняется содержимое правого). Как это сделать, рассмотрим на примере:
|
В левом фрейме у нас меню, а в правом - урок первый:<frameset cols="200,*"> <frame src="menu.html"> <frame src="urok1.html" name="content"> </frameset> |
<html> <head> <title>menu</title> </head> <body> <a href="urok1.html" target="content">Урок 1</a> <br> <a href="urok2.html" target="content">Урок 2</a> <br> <a href="urok3.html" target="content">Урок 3</a> <br> <a href="urok4.html" target="content">Урок 4</a> <br> </body> </html>
Теперь клик по ссылке "Урок 2" вызовет загрузку страницы "urok2.html" в фрейме с именем "content" (т.е. в правом фрейме). При отсутствии атрибута target (перводится с английского как "цель") загрузка произошла бы в левом фрейме, где находится сама ссылка. Этот атрибут в данном примере можно указать только один раз - как атрибут тега <base>, т.е. все ссылки по умолчанию будут загружаться в фрейме с именем "content". В таком случае текст будет выглядеть так:
<html> <head> <title>menu</title> </head> <body> <base target="content"> <a href="urok1.html">Урок 1</a> <br> <a href="urok2.html">Урок 2</a> <br> <a href="urok3.html">Урок 3</a> <br> <a href="urok4.html">Урок 4</a> <br> </body> </html>
Кроме имени фрейма значением атрибута target может быть одно из следующих зарезервированных слов:
Все вышеперечисленные значения должны начинаться с символа подчеркивания и набираться только прописными буквами.
Используя на своем сайте фреймы, нельзя забывать о том, что некоторые браузеры могут не поддерживать фреймы - старые браузеры, речевые и др. Специально для них существует тег noframes, в котором можно сделать "нефреймовую" версию сайта, или хотя бы просто перечислить ссылки на страницы сайта. Пример:
<html> <head> <title>Уроки HTML</title> </head> <frameset cols="200,*"> <frame src="menu.html"> <frame src="urok1.html" name="content"> </frameset> <noframes> <body> <p>Эта страница использует фреймы. Поскольку Ваш браузер не может просматривать такие страницы, воспользуйтесь следующими ссылками: <p><a href="urok1.html">Урок 1</a> <p><a href="urok2.html">Урок 2</a> <p><a href="urok3.html">Урок 3</a> <p><a href="urok4.html">Урок 4</a> </body> </noframes> </html>
В результате браузер, поддерживающий просмотр фреймов, отобразит на эране только фреймы с их содержимым и проигнорирует все, что находится между <noframes> и </noframes>. Остальные браузеры не обратят никакого внимания на содержимое контейнера <frameset>, но воспоизведут содержимое <noframes>. Еще одна причина, по которой следует обращать внимание на тег <noframes> - далеко не все поисковые роботы понимают фреймы. Поэтому без <noframes> ваша страница рискует остаться непроиндексированной.
Придерживайтесь следующего порядка размещения: сперва контейнер <frameset>, а потом - <noframes> (т.е. как в примере). В противном случае возможна ошибка Netscap'а.
Существует еще одна разновидность фреймов - встроенный фрейм (inline frame). Он может быть вставлен непосредственно в текст страницы и выглядит следующим образом:
Для встраивания такого фрейма используется тег <iframe>. Наличие закрывающего тега обязательно. Между ними можно вставлять любой текст для браузеров, не поддерживающих фреймы. Аттрибуты:
Для примера выше был использован следующий код:
<iframe src="examples/iframe.htm" width="300" height="70" scrolling="auto" frameborder="1"> Ваш браузер не поддерживает фреймы. Здесь должен быть размещен пример встроенного фрейма. </iframe>
Размеры такого фрейма не могут изменяться пользователем. Поэтому атрибут noresize не используется.
И в заключение совет. Если ваш сайт будет построен с использованием фреймов, то часто посетители будут к вам приходить с поисковиков, и чаще всего они будут попадать на одну из внутренних страниц сайта. Естественно, сайт они увидят совсем не в том виде, как это задумывалось вами. Чтобы этого не происходило, вставьте в текст страниц такой код:
<SCRIPT LANGUAGE="JavaScript"> <!-- if (self.parent.frames.length == 0) document.writeln("Эту страницу лучше просматривать во фрейме."); document.writeln("Если ваш браузер поддерживает фреймы, то"); document.writeln("<A HREF=\"index.html\">кликните здесь.</A>"); // --> </SCRIPT>
Или такой:
<SCRIPT LANGUAGE="JavaScript"> <!-- if (self.parent.frames.length == 0) self.parent.location="index.html"; // --> </SCRIPT>
Первый скрипт выводит предложение перезагрузить страницу, если она была загружена не в фрейме. Второй делает то же самое, но без предупреждения.