русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Тема: фреймы.


Дата добавления: 2015-07-09; просмотров: 640; Нарушение авторских прав


Объяснить, что такое фреймы и для чего они нужны, лучше всего на примере. Страница, которую вы сейчас читаете, состоит из двух фреймов: левого, в нем перечислены все уроки, и правого с собственно самими уроками. Вы можете прокручивать содержимое правого фрейма, в то время как левый остается неподвижным. Это позволяет вам в любой момент легко перейти на любой урок, не разыскивая ссылку внизу или вверху страницы. Словом, разумное использование фреймов позволяет существенно упростить навигацию по сайту и улучшить его дизайн.

Суть фреймов в принципе проста: страница делится на несколько окон, в каждое из которых загружается своя страничка (или картинка), со своим собственным адресом. К примеру, в левом окне - "vasja.html", а в правом - "pupkin.html" (которая физически может находиться где-нибудь на другом сервере). Как и любые страницы в Интернете, они могут ссылаться на другие страницы и друг на друга. Кроме этих двух страниц вы должны написать третью, в которой и будут определяться размеры и свойства этих окон. Для этого используются только два тега - <FRAMESET> и <FRAME>. Чтобы их объяснить, рассмотрим пример:

Во-первых, создадим два файла - vasja.html и pupkin.html:

<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 (фреймы считаются слева направо и сверху вниз. Здесь - этот пример в действии (откроется в новом окне). Все просто! Еще несколько примеров:



20% 30% 50%

 

Три фрейма разной ширины. <frameset cols="20%,30%,50%"> <frame src="page1.html"> <frame src="page2.html"> <frame src="page3.html"> </frameset>
25%
75%

 

Фреймы можно расположить рядами так же легко, как и столбцами. Просто меняем аттрибут 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>
* 2*

 

Можно устанавливать пропорции для окон. В этом примере левый фрейм будет шириной в 150 пикселов, а остальную часть страницы поделят между собой 2-й и 3-й фреймы, причем третий фрейм будет в 2 раза шире первого. <frameset cols="150,*,2*"> <frame src="page1.html"> <frame src="page2.html"> <frame src="page3.html"> </frameset>
*
15%
3*

 

То же, но для рядов: 2-й фрейм занимает 15% от высоты окна, а 1-й и 3-й - все остальное в пропорции 1:3. <frameset rows="*,15%,3*"> <frame src="page1.html"> <frame src="page2.html"> <frame src="page3.html"> </frameset>

Фреймы могут быть вложенными друг в друга. Это позволяет создавать более сложные конструкции страниц. Рассмотрим несколько примеров:

40% 60%
*

 

<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 пикселов, размещенный в отдельном фрейме, а в правом внизу - баннер, который при скроллинге правого окна все время будет оставаться на месте. Должно получиться следующее:

Logo Text  
Menu  
Banner  

 

<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> - парный тег, т.е. он обязательно должен иметь закрывающий тег. Может включать следующие аттрибуты:

  • cols и rows - применение и возможные значения этих аттрибутов были рассмотрены выше. Внимание! Не рекомендуется одновременное использование аттрибутов cols и rows, т.е. в некоторых браузерах конструкция <frameset cols="50%,50%" rows="30%,70%"> может привести к непредсказуемым результатам;
  • border="x" - толщина рамок фреймов в пикселах;
  • frameborder="no|yes" или "0|1" - определяет отсутствие (no или 0) или наличие (yes или 1) рамок в определенном фреймсете. Например, таким образом в предыдущем примере можно было бы убрать только рамки между баннером и текстом и между логотипом и меню, а между левым и правым фреймами оставить;
  • bordercolor="#hhhhhh" - цвет рамок. Значением может быть шестнадцатиричное число или зарезервированное слово (red, blue, teal, olive и т.д.);

Тег <frame> может включать следующие аттрибуты:

  • src="имя" - указывает браузеру, что и откуда надо загружать в данный фрейм;
  • name="имя" - присваивает имя фрейму. Позволяет управлять данным фреймом из других. Например, клик по ссылке в одном фрейме будет вызывать загрузку страницы в другом фрейме (подробнее в следующем абзаце);
  • marginwidth="x" - величина отступа содержимого фрейма (текста, графики и т.п.) от границ по горизонтали. Выражается в пикселах, минимальное значение 1;
  • marginheight="y" - величина отступа по вертикали. Минимальное значение также 1;
  • scrolling="yes" - определяет наличие полос прокрутки у данного фрейма. Возможные значения аттрибута:
    • yes - полосы прокрутки присутствуют обязательно;
    • no - полосы прокрутки отсутствуют всегда - независимо от того, вмещается ли документ в фрейм целиком или нет;
    • auto - автоматический режим (значение по умолчанию): полосы прокрутки появляются при необходимости, т.е. если документ не вмещается в фрейм;
  • noresize - наличие этого аттрибута запрещает изменение размеров фрейма пользователем (обычно любую границу фрейма можно с легкостью переместить мышкой).

Как указывалось выше, аттрибут name тега <frame> позволяет присвоить каждому фрейму свое имя, что позволяет управлять содержимым одного фрейма из другого (т.е. как в этих уроках - вы кликаете по ссылке в левом фрейме, а меняется содержимое правого). Как это сделать, рассмотрим на примере:

Меню Раздел 1

 

В левом фрейме у нас меню, а в правом - раздел первый: <frameset cols="200,*"> <frame src="menu.html"> <frame src="razd1.html" name="content"> </frameset>

Правому фрейму мы присвоили имя "content" (можно любое другое). Теперь создадим файл menu.html, это будет меню для левого фрейма:

<html> <head> <title>menu</title> </head> <body> <a href="razd1.html" target="content">Раздел 1</a> <br> <a href="razd2.html" target="content">Раздел 2</a> <br> <a href="razd3.html" target="content">Раздел 3</a> <br> <a href="razd4.html" target="content">Раздел 4</a> <br> </body> </html>

Теперь клик по ссылке "Раздел 2" вызовет загрузку страницы "razd2.html" в фрейме с именем "content" (т.е. в правом фрейме). При отсутствии аттрибута target (перводится с английского как "цель") загрузка произошла бы в левом фрейме, где находится сама ссылка. Этот аттрибут в данном примере можно указать только один раз - как аттрибут тега <base>, т.е. все ссылки по умолчанию будут загружаться в фрейме с именем "content". В таком случае текст будет выглядеть так:

<html> <head> <title>menu</title> </head> <body> <base target="content"> <a href="razd1.html">Раздел 1</a> <br> <a href="razd2.html">Раздел 2</a> <br> <a href="razd3.html">Раздел 3</a> <br> <a href="razd4.html">Раздел 4</a> <br> </body> </html>

Кроме имени фрейма значением аттрибута target может быть одно из следующих зарезервированных слов:

  • _blank - браузер должен открыть новое окно и загрузить в него документ (на который была ссылка) - обычно используется для того, чтобы посетитель не уходил по ссылке с вашего сайта;
  • _top - браузер должен загрузить документ в этом же окне, предварительно очистив его от всех фреймов - аттрибут с этим значением надо указывать обязательно, если вы делаете ссылку на другой сайт из фрейма. В противном случае этот сайт будет загружен в фрейме;
  • _self - документ загружается в том же фрейме, где находится сама ссылка. Может потребоваться в случае, если в тексте есть строка <base target="имя_фрейма">;
  • _parent - документ загружается в родительский фреймсет текущего фрейма.

Все вышеперечисленные значения должны начинаться с символа подчеркивания и набираться только прописными буквами.

Используя на своем сайте фреймы, нельзя забывать о том, что некоторые браузеры могут не поддерживать фреймы - старые браузеры, речевые и др. Специально для них существует тег noframes, в котором можно сделать "нефреймовую" версию сайта, или хотя бы просто перечислить ссылки на страницы сайта. Пример:

<html> <head> <title>Раздел HTML</title> </head> <frameset cols="200,*"> <frame src="menu.html"> <frame src="razd1.html" name="content"> </frameset> <noframes> <body> <p>Эта страница использует фреймы. Поскольку Ваш браузер не может просматривать такие страницы, воспользуйтесь следующими ссылками: <p><a href="razd1.html">Раздел 1</a> <p><a href="razd2.html">Раздел 2</a> <p><a href="razd3.html">Раздел 3</a> <p><a href="razd4.html">Раздел 4</a> </body> </noframes> </html>

В результате браузер, поддерживающий просмотр фреймов, отобразит на эране только фреймы с их содержимым и проигнорирует все, что находится между <noframes> и </noframes>. Остальные браузеры не обратят никакого внимания на содержимое контейнера <frameset>, но воспоизведут содержимое <noframes>. Еще одна причина, по которой следует обращать внимание на тег <noframes> - далеко не все поисковые роботы понимают фреймы. Поэтому без <noframes> ваша страница рискует остаться непроиндексированной.

Придерживайтесь следующего порядка размещения: сперва контейнер <frameset>, а потом - <noframes> (т.е. как в примере). В противном случае возможна ошибка Netscap'а.

Существует еще одна разновидность фреймов - встроенный фрейм (inline frame). Он может быть вставлен непосредственно в текст страницы и выглядит следующим образом:

Ваш браузер не поддерживает фреймы. Здесь должен быть размещен пример встроенного фрейма.

Для встраивания такого фрейма используется тег <iframe>. Наличие закрывающего тега обязательно. Между ними можно вставлять любой текст для браузеров, не поддерживающих фреймы. Аттрибуты:

  • src="filename.html" - указывает адрес содержимого фрейма;
  • name="name" - присвает имя фрейму;
  • width="x" - ширина фрейма;
  • height="y" - высота фрейма;
  • scrolling="yes|no|auto" - наличие полос прокрутки;
  • frameborder="1|0|yes|no" - наличие (yes или 1) или отсутствие (no или 0) рамки вокруг фрейма;
  • marginwidth="x" - величина отступа содержимого фрейма от границ по горизонтали;
  • marginheight="y" - величина отступа по вертикали.

Для примера выше был использован следующий код:

<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>

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

 



<== предыдущая лекция | следующая лекция ==>
Тема: вкратце о CSS. | Лабораторная работа №2.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.993 сек.