Ссылки во фреймах
В обычном HTML-документе при переходе по ссылке, в окне браузера текущий документ заменяется новым. При использовании фреймов схема загрузки документов отличается от стандартной. Основное отличие — возможность загружать документ в выбранный фрейм из другого. Для этой цели используется атрибут target тега . В качестве значения используется имя фрейма, в который будет загружаться документ, указанный атрибутом name (пример 13.5).
Пример 13.5. Ссылка на другой фрейм
В приведенном примере фрейму присваивается имя CONTENT . Чтобы документ загружался в указанный фрейм, используется конструкция target=»CONTENT» , как показано в примере 13.6.
Пример 13.6. Содержимое файла menu2.html
МЕНЮ
Текст
Имя фрейма должно начинаться на цифру или латинскую букву. В качестве зарезервированных имен используются следующие:
- _blank — загружает документ в новое окно;
- _self — загружает документ в текущий фрейм;
- _parent — загружает документ во фрейм, занимаемый родителем, если фрейма-родителя нет значение действует также, как _top ;
- _top — отменяет все фреймы и загружает документ в полное окно браузера.
HTML по теме
Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.
Популярные рецепты
- Как добавить картинку на веб-страницу?
- Как добавить иконку сайта в адресную строку браузера?
- Как добавить фоновый рисунок на веб-страницу?
- Как сделать обтекание картинки текстом?
- Как растянуть фон на всю ширину окна?
- Как выровнять фотографию по центру веб-страницы?
- Как разместить элементы списка горизонтально?
- Как убрать подчеркивание у ссылок?
- Как убрать маркеры в маркированном списке?
- Как изменить расстояние между строками текста?
- Как сделать, чтобы картинка менялась при наведении на нее курсора мыши?
- Как открыть ссылку в новом окне?
Популярные задачи
- TEX
- Отступы между блоков
- Андроид в тени
- Ссылка как кнопка
- Вложенные списки
- Форма регистрации
- Объединение ячеек таблицы
- Обязательные поля формы
- Цвет и фон в таблице
- Асуанская плотина
- Батарейка
- Заголовки
Naming and Targeting Frames
Before you can ensure navigation within frames, you’ve got to first name the frames. Then you target them using the target attribute. There’s also another target method you’ll explore, referred to as magic target names.
Name targeting is done using the name attribute with a value that describes the frame. Typically, this value describes the function of that frame. So a navigation frame might be called nav, a content frame content, and so forth.
Example 6-9 describes a frameset document with all the frames properly named.
Example 6-9. Naming frames
The document now sets up a frame page with a menu and a content area. Now that the specific frames are named, you can add targets to any links within the HTML so that the behavior works properly.
If you want to click a link in the menu frame and have the corresponding link page load into the content frame, you use the target attribute with a value of the page’s name in the link (see Example 6-10).
Example 6-10. Targeting frames with the target and name attributes
Now any time you click a link, the about, clients, or contact documents will load into the named content frame.
Magic Target Names
target="_blank" The _blank target name causes the targeted document to open in a completely new browser window.
target="_self" The targeted document will load in the same window where the originating link exists.
target="_parent" This loads the targeted document into the link’s parent frameset.
If you want to break out of your frames and have a full, frameless document fill the window, do not use the name value you provided earlier in your target; use the magic target name, _top:
This results in the contact.html page completely overriding the frameset document and all corresponding frames (see Figure 6-7).
Figure 6-7. Using a magic target name, the contact page is now linked so that it completely overrides the frameset and loads into the original containing window.
Do not try to force another person’s site into your frames. This is considered problematic and possibly illegal. Also, be careful when naming targets yourself, avoid mixed case, and definitely avoid any symbols, such as the underscore, which is already reserved for the magic target name. Finally, using the _blank magic target name forces a new browser to open, which many people find troublesome.
Фреймы
Фреймы — это HTML-элементы, позволяющие разделить окно веб-браузера на несколько независимых окон, в каждое из которых можно загрузить отдельный HTML-документ. Каждое такое окно (фрейм) может иметь собственные полосы прокрутки и функционировать независимо от других независимых окон либо наоборот управлять их содержанием. Они могут применяться для организации постоянно находящегося в одном окне меню, в то время как в другом окне располагается непосредственно сама информация. Пользователи могут обращаться к меню в любой момент, и им не нужно возвращаться к предыдущей странице, чтобы выбрать другой пункт меню. Применение фреймов позволит вам «закрепить» в окне браузера изображения или другие неподвижные по замыслу элементы интерфейса, в то время как остальная часть страницы будет прокручиваться во фрейме.
Однако, стоит отметить, что в наши дни фреймы считаются устаревшим средством, а сайты с фреймами теперь считаются несолидными, так как профессиональные веб-мастера никогда не используют фреймы в своих проектах. С фреймами связан целый ряд печально известных проблем. Они, например, сбивают с толку поисковые машины, поскольку на страницах, которые содержат контент, нет ссылок на другие документы. Если вы хотите получать посетителей с поисковых систем, забудьте о фреймах. Понравившуюся страницу пользователю невозможно поместить в раздел закладки браузера, так как фреймы скрывают адрес страницы, на которой он находится, и всегда показывают только адрес веб-сайта. По этой причине они создают проблемы для браузеров при отслеживании хронологии и еще они не слишком приспособлены для разных размеров экранов и мобильных устройств.
Несмотря на то, что проекты с фреймами встречаются во всемирной паутине все реже, изучение HTML было бы неполным без рассмотрения темы о фреймах. У фреймов наряду с недостатками есть и некоторые достоинства, которые не позволяют отбросить эту технологию как бесперспективную.
Создание фреймов
Структура HTML-документа с фреймами внешне очень напоминает формат обычного HTML-документа. Как и в обычном HTML-документе, весь код помещен между парными тегами и , а в контейнере располагаются заголовки. Основное отличие документа с фреймами от обычного HTML-документа — у документа с фреймами вместо тега применяется парный тег (от англ. frame set – набор фреймов).
В следующем примере приведена структура HTML-документа с фреймами:
Пример: Структура HTML-документа с фреймами
- rows — описывает разбиение страницы на строки:
- cols — описывает разбиение страницы на столбцы:
В значении атрибутов rows и cols необходимо указывать не количество строк или столбцов, а значение ширины и высоты фреймов. Все значения в списке разделяются запятыми. Размеры могут быть указаны в абсолютных единицах (в пикселах) или в процентах:
- cols=»20%, 80%» — окно браузера разбивается на две колонки с помощью атрибута cols, левая колонка занимает 20%, а правая 80% окна браузера.
- rows=»100, *» окно браузера разбивается на два горизонтальных окна с помощью атрибута rows, верхнее окно занимает 100 пикселов, а нижнее — оставшееся пространство, заданное символом звездочки.
Как видно из данного примера, контейнер с атрибутом rows вначале создает два горизонтальных фрейма, а вместо второго фрейма подставляется еще один , который разбивает нижний горизонтальный фрейм на две колонки с помощью атрибута cols, левая колонка занимает занимает 20%, а правая 80% окна браузера.
Если браузер не поддерживает фреймы, то в окне будет отображен текст, расположенный между тегами и . Все, что находится между тегами и , игнорируется браузерами, поддерживающими фреймы. Таким образом разработчику нужно написать код, дублирующий содержимое фреймов другими средствами, и поместить этот код в контейнер , тогда все пользователи смогут увидеть его веб-страницу.
Как уже отмечалось, для вставки в документ отдельного фрейма служит непарный тег . Атрибут src задает документ, который должен отображаться внутри данного фрейма, например: . Если атрибут src отсутствует, отображается пустой фрейм.
Границы или пространство между фреймами
По умолчанию, браузер отображает серую и, как правило, в виде трехмерной линии границу между фреймами, с помощью которой посетители могут регулировать размер фрейма.
Границей фрейма можно управлять, как и любыми другими элементами фрейма. Для этого существует несколько атрибутов элемента , позволяющих настраивать границы фреймов. Толщина линии границы определяется атрибутом border. По умолчанию значение толщины границы равно пяти.
Чтобы скрыть границу фрейма, необходимо либо указать значение ширины границы равным нулю, либо присвоить значение «no» или «0» атрибуту frameborder. Атрибут frameborder может принимать только два противоположных значения. Если значение атрибута frameborder равно «yes» или «1», то граница фреймов будет отображаться, а если «0» или «no», то нет. Учтите, что значения атрибута frameborder различаются для разных браузеров. Чтобы решить эту проблему используйте дважды атрибут frameborder, а для некоторых браузеров требуется еще добавить атрибут framespacing со значением «0»:
В следующем примере убираем границу между фреймами:
Ссылки во фреймах
Поскольку фреймы представляют собой набор независимых окон, для того, чтобы ссылка открывалась в нужном месте, следует указывать имена фреймов.
Предположим, у нас есть документ, состоящий из двух фреймов, названных MENU и CONTENT, как изображено на рис. 1.
Рис. 1. Вид документа с фреймами
Обычно в левом фрейме находится список ссылок на разделы сайта, а в правом фрейме отображается содержимое документов. Чтобы веб-страница открывалась в определенном фреймовом окне, следует использовать следующий код (пример 1).
Пример 1. Открытие документа во фрейме
Ссылка открывает сайт www.htmlbook.ru во фрейме с именем CONTENT
Если атрибут ссылки target=»CONTENT» будет опущен, документ откроется в текущем фрейме, где находится сама ссылка.
Чтобы одновременно обновить сразу два фрейма и загрузить в них разные документы, придется воспользоваться JavaScript (пример 2, 3).
Нажми на меня, нажми
Ссылка используется как обычная, но в качестве атрибута добавляется событие onclick , отслеживающее нажатие на ссылку. Обратите внимание, что имя фрейма следует писать также, как оно указано в атрибуте name (в данном случае заглавными символами). JavaScript чувствителен к регистру и мнительно относится к любому неправильному написанию.