Отправляет email-рассылки с помощью сервиса Sendsay

Самоучитель по HTML и CSS

  Все выпуски  

Самоучитель по HTML и CSS - 20


Самоучитель по HTML и CSS

Добрый день.

Некоторые читатели нашей рассылки жаловались, что предыдущий 19 выпуск пришел к ним в совершенно нечитаемом виде. Напишите мне, есть ли у вас проблемы с этим выпуском или нет. При накоплении критической массы замечаний выпуск будет повторен. Пока же посмотреть его можно в архиве, по адресу http://subscribe.ru/archive/inet.webbuild.htmlcss/200711/14185703.html

14. Работа с фреймами

Ссылки во фреймах

В обычном HTML-документе при переходе по ссылке, в окне браузера текущий документ заменяется новым. При использовании фреймов схема загрузки документов отличается от стандартной. Основное отличие — возможность загружать документ в выбранный фрейм из другого. Для этой цели используется параметр target тега <А>. В качестве значения используется имя фрейма, в который будет загружаться документ, указанный параметром name (листинг 14.1).

Листинг 14.1. Ссылка на другой фрейм

Файл index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фреймы</title>
</head>
<frameset cols="100,*">
 <frame src="menu.html" name="MENU">
 <frame src="content.html" name="CONTENT">
</frameset>
</html>

Файл menu.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Навигация по сайту</title>
</head>
<body>
<p><a href="text.html" target="CONTENT">Содержание</a></p>
</body>
</html>

В приведенном примере фрейму присваивается имя CONTENT. Чтобы документ загружался в указанный фрейм, используется параметр target="CONTENT". Обратите внимание на элемент !DOCTYPE, он «переходный». Это связано с тем, что параметр target осуждается в спецификации HTML и не рекомендуется к использованию.

Имя фрейма должно начинаться на цифру или латинскую букву. В качестве зарезервированных имен используются следующие:

_blank — загружает документ в новое окно;
_self — загружает документ в текущий фрейм;
_parent — загружает документ во фрейм, занимаемый родителем, если фрейма-родителя нет параметр действует также, как _top;
_top — отменяет все фреймы и загружает документ в полное окно браузера.

Границы в фреймах

Граница между фреймами отображается по умолчанию и, как правило, в виде трехмерной линии. Чтобы ее скрыть используется параметр frameborder тега <FRAMESET> со значением 0. Однако в браузере Opera граница хоть и становится в этом случае бледной, все же остается. Для этого браузера требуется добавить параметр framespacing="0". Таким образом, комбинируя разные параметры тега <FRAMESET>, получим универсальный код, который работает во всех браузерах. Линия при этом показываться никак не будет (листинг 14.2).

Листинг 14.2. Убираем границу между фреймами

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фреймы</title>
</head>
<frameset cols="100,*" frameborder="0" framespacing="0">
 <frame src="menu.html" name="MENU">
 <frame src="content.html" name="CONTENT">
</frameset>
</html>

Если граница между фреймами все же нужна, в браузере она рисуется по умолчанию, без задания каких-либо параметров. Можно, также, задать цвет рамки с помощью параметра bordercolor, который может применяться в тегах <FRAMESET> и <FRAME>. Цвет указывается по его названию или шестнадцатеричному значению (листинг 14.3), а толщина линии управляется параметром border. Браузер Opera игнорирует этот параметр и обычно отображает линию черного цвета.

Листинг 14.3. Изменение цвета границы

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фреймы</title>
</head>
<frameset cols="100,*" bordercolor="navy" border="5">
 <frame src="menu.html" name="MENU">
 <frame src="content.html" name="CONTENT">
</frameset>
</html>

В данном примере линия между фреймами задается синего цвета толщиной пять пикселов. Линии различается по своему виду в разных браузерах, несмотря на одинаковые параметры (рис. 14.1).

Граница в браузере Internet Explorer 6 Граница в браузере Opera 7 Граница в браузере Netscape 7
Internet Explorer Opera Firefox

Рис. 14.1. Вид границы между фреймами в разных браузерах

Браузер Opera никак не изменяет цвет границы между фреймами, Internet Explorer устанавливает широкую границу практически сплошного цвета, а Firefox границу отображает в виде набора линий.

Изменение размеров фреймов

По умолчанию размеры фреймов можно изменять с помощью курсора мыши, наведя его на границу между фреймами. Для блокировки возможности изменения пользователем размера фреймов следует воспользоваться параметром noresize тега <FRAME> (листинг 14.4).

Листинг 14.4.Запрет на изменение размера фреймов

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фреймы</title>
</head>
<frameset cols="100,*">
 <frame src="menu.html" name="MENU" noresize>
 <frame src="content.html" name="CONTENT">
</frameset>
</html>

Параметр noresize не требует никаких значений и используется сам по себе. Для случая двух фреймов этот параметр можно указать лишь в одном месте. Естественно, если у одного фрейма нельзя изменять размеры, то у близлежащего к нему размеры тоже меняться не будут.

Полосы прокрутки

Если содержимое фрейма не помещается в отведенное окно, автоматически появляются полосы прокрутки для просмотра информации. В некоторых случаях полосы прокрутки нарушают дизайн веб-страницы, поэтому от них можно отказаться. Для управления отображением полос прокрутки используется параметр scrolling тега <FRAME>. Он может принимать два основных значения: yes — всегда вызывает появление полос прокрутки, независимо от объема информации и no — запрещает их появление (листинг 14.5).

Листинг 14.5.Запрет на изменение размера фреймов

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фреймы</title>
</head>
<frameset cols="100,*">
 <frame src="menu.html" name="MENU" noresize scrolling="no">
 <frame src="content.html" name="CONTENT">
</frameset>
</html>

При выключенных полосах прокрутки, если информация не помещается в окно фрейма, просмотреть ее будет сложно. Поэтому параметр scrolling="no" следует использовать осторожно.

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

Copyright 2007 Влад Мержевич. По всем вопросам пишите по адресу vlad@htmlbook.ru

В избранное