frame на frame
Доброго времени суток. Возжожно ли реализовать наложение frame на frame и если да, то как?
У меня есть центральный фрейм и правый. Нужно чтобы правый залезал на центральный.
Добавлено через 12 минут
пробовал frame засунуть в див и сделать один выше другого. не вышло вот собственно код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
rows="17,65%,43 ,0" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0"> frame src="header_ru.html" target="_top" scrolling=NO NORESIZE FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH="0" MARGINHEIGHT="0"> cols="17, *, 17" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0"> frame src="left.html" name="left" NORESIZE frameborder="0" scrolling="no" border="0" framespacing="0" marginwidth="0" marginheight="0"> rows="70%,*"> frame name="main" src="main.php" style="border-bottom: 2px solid #B89426"> cols="75%,25%"> frame name="chat" src="blank.htm" target="_top" scrolling=yes FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH="3" MARGINHEIGHT="3" style="border-right: 2px solid #B89426"> frame name="online" src="online.php" target="_blank" scrolling=yes FRAMEBORDER=0 BORDER=0 FRAMESPACING=0 MARGINWIDTH=3 MARGINHEIGHT=0> /frameset> /frameset> frame src="right.html" name="right" NORESIZE frameborder="0" scrolling="no" border="0" framespacing="0" marginwidth="0" marginheight="0"> /frameset> frame name="bottom" scrolling="no" noresize src="say.php"> frame name="hdn" target="_top" scrolling="no" noresize src="about :blank"> /frameset> /frameset>
Frame
Здравствуйте. Задали задание написать сайт с помощью фреймов. Подскажите пожалуйста как сделать.
Facebook frame
Нашел на одном сайте фрейм с новостной лентой фейсбук страницы. Выглядит оно так.
Сообщение от Method Man
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
style type="text/css"> #leftcol < position: relative; /* Относительное позиционирование */ float: left; /* Совмещение колонок по горизонтали */ width: 400px; /* Ширина слоя */ background: #800000; /* Цвет фона */ color: white; /* Цвет текста */ >#rightcol < position: relative; /* Относительное позиционирование */ float: left; /* Совмещение колонок по горизонтали */ left: -50px; /* Сдвиг слоя влево */ top: 50px; /* Смещение слоя вниз */ width: 120px; /* Ширина слоя */ background: #e0e0e0; /* Цвет фона */ border: solid 1px black; /* Параметры рамки */ >#leftcol P < padding: 10px; /* Поля вокруг текста */ padding-right: 50px; /* Значение поля справа */ margin: 0; /* Обнуляем значения отступов */ >#rightcol P < padding: 10px; /* Поля вокруг текста */ padding-top: 0 /* Значение поля сверху */ >/style> rows="17,65%,43 ,0" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0"> frame src="header_ru.html" target="_top" scrolling=NO NORESIZE FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH="0" MARGINHEIGHT="0"> cols="17, *, 17" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0"> frame src="left.html" name="left" NORESIZE frameborder="0" scrolling="no" border="0" framespacing="0" marginwidth="0" marginheight="0"> rows="70%,*"> div id="leftcol">frame name="main" src="main.php" style="border-bottom: 2px solid #B89426"> cols="75%,25%">/div> frame name="chat" src="blank.htm" target="_top" scrolling=yes FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH="3" MARGINHEIGHT="3" style="border-right: 2px solid #B89426"> frame name="online" src="online.php" target="_blank" scrolling=yes FRAMEBORDER=0 BORDER=0 FRAMESPACING=0 MARGINWIDTH=3 MARGINHEIGHT=0> /frameset> /frameset> div id="rightcol">frame src="right.html" name="right" NORESIZE frameborder="0" scrolling="no" border="0" framespacing="0" marginwidth="0" marginheight="0"> /frameset>/div> frame name="bottom" scrolling="no" noresize src="say.php"> frame name="hdn" target="_top" scrolling="no" noresize src="about :blank"> /frameset> /frameset>
Тоеть задал то я задал дивам наложение одного на другой. но толку? не наложилось.
Добавлено через 1 минуту
или мне просто нужно засунуть основной фрейм в див.
Php фрейм во фрейме
При использовании фреймов, всегда существует вероятность того, что страница, которая должна отображаться в одном из фреймов, будет открыта вне фрейма. Это создает неудобства как для пользователя, так и для владельца потому, что пользователь видит только часть страницы и, вполне возможно, не самую главную. Как проконтролировать во фрейме открыта страница или вне фрейма и как «вернуть» ее во фрейм?
Первый вопрос, который при этом возникает, где выполнять контроль – на сервере или на машине пользователя? Так хотелось написать все, ну скажем, на PHP, проверить все до отправки страницы и не использовать JavaScript, VBScript или что-то другое. В принципе на сервере можно организовать контроль и анализ запросов пользователя и логически определить, как пользователь пытается загрузить страницу, и, при необходимости, подкорректировать запросы, URL и т.п.. Но даже если Вам удастся реализовать подобный контроль, Вы будете лишь предполагать, в каком окне открыта страница, а не знать это. Реально узнать где открыта страница, изменить окно документа можно только на стороне пользователя. Поэтому не будем рассматривать экзотические способы и остановимся на использовании для этих целей JavaScript.
Наиболее практично проверить является ли окно документа верхним или проверить его имя. Будем считать, что фреймовая структура задается в файле myframe.html, а фрейм, в котором должен отображаться документ, имеет имя myFrame.
Проверка подожения окна может выглядеть следующим образом:
// если проверяемое окно является верхним, // то изменяем URL этого окна < script language="JavaScript" type="text/javascript" >if (window == top) top.location.href = "myframe.html"; // или window.location.href = "myframe.html" > < / script >
Проверка имени окна может выглядеть следующим образом:
// если имя проверяемого окна не совпадает с именем нужного фрейма, // то изменяем URL этого окна < script language="JavaScript" type="text/javascript" >if (this.name != "myFrame") // или if (self.name != "myFrame") // или if (window.name != "myFrame") window.location.href = "myframe.html"; > < / script >
Этот код надо вставить во все страницы, открытие которых вне фрейма не желательно. Выполнять такую проверку лучше всего внутри тега HEAD. Тогда, если потребуется перезагрузка документа, то она будет выполнена до того, как документ будет отображен на мониторе. Если это выполнять внутри тега BODY (например, по событию onLoad), то документ сначала будет показан, а потом начнется перезагрузка.
Для фреймов, в которых отображается всегда один и тот же документ этого вполне достаточно. Но обычно хотя бы в одном из фреймов могут отображаться разные документы и каждый раз при открытии этих документов вне фрейма отсылать пользователя в самое начало сайта нежелательно (например: пользователь пришел из поисковой системы на конкретную страницу, а вместо нее попадает на главную. В следующий раз он может просто проигнорировать Вашу ссылку). Значит необходимо указать какой именно документ должен отобразиться во фрейме. К тому же если такую проверку надо выполнять для многих документов, то вписывать скрипт в каждый из них не очень практично. Лучше создать отдельный файл скрипта и включать его в нужные документы.
Прежде чем создавать такой файл, оценим ситуацию в целом. Если все будет выполняться на стороне пользователя, то для того чтобы перезагрузить неправильно открытый документ потребуется не менее 2-х перезагрузок, прежде чем все окажется на своих местах (текущее окно > главное окно > установка нужного документа во фрейме). Это не очень хорошо. Вот здесь лучше всего совместить возможности серверных и клиентских скриптов, что позволит избежать лишних перезагрузок. Используем PHP и JavaScript. Все примеры скиптов просты и не требуют специальных пояснений. Необходимые комментарии будут даны в тексте примеров.
Сначала зададим необходимые значения:
myframe.php – файл, содержащий описания фреймов;
dataFrame – имя фрейма, в котором должны отображаться документы;
mypage.php – один из документов;
mainpage.php — документ, отображаемый в dataFrame по умолчанию;
is_top.php – файл, содержащий скрипты контроля.
Листинг файла is_top.php
Примечание: сначала, конечно, следует проверить, а нужно ли вообще перезагружать документ, но поскольку это зависит от конкретного сайта и конкретной ситуации, такая проверка здесь описываться не будет.
< ? php $strQuery = ""; if ($_SERVER['PHP_SELF'] == "mypage.php") < $strQuery = $_SERVER['PHP_SELF']; if (isset($_SERVER['QUERY_STRING']) and $_SERVER['QUERY_STRING'] != "") < // если URL уже содержит какие-то запросы, // то их надо включить в текст вновь создаваемого запроса $strQuery .= "?curpage=".$_SERVER['QUERY_STRING']; > > ? > < script language="JavaScript" type="text/javascript" >if (window == top) top.location.href = "myframe.php "; > < / script >
Для вызова проверки достаточно включить в файл mypage.php одну строку (лучше всего делать проверку в самом начале документа, чтобы не выполнять ненужных действий, если будет выполнена перезагрузка документа).
Листинг файла mypage.php
< ? php require_once('is_top.php'); ? >// этот код надо вставить во все страницы, открытие которых вне фрейма не желательно // далее текст документа
Окончательная обработка производится в файле «myframe.php».
Листинг файла myframe.php
Примечание: для тех, кто использует какие-либо среды программирования для создания web-страниц (например, Macromedia Dreamweaver), предпочтительнее использовать немного другую конструкцию. Дело в том, что переменная $curPage при отображении страницы в дизайнере не определена. Это может вызвать ошибку или неправильное отображение документа. Вот такая конструкция исключает подобные проблемы:
В этом случае Macromedia Dreamweaver в дизайнере страниц будет загружать в dataFrame документ «mainpage.php».
Фреймы
Фреймы – это прямоугольные области экрана, каждая из которых содержит свой собственный html-документ. Фреймы использовались для оформления следующих документов:
- Оглавление. Если вы поместите на Web-страницу оглавление в виде вертикального столбца, то пользователь сможет обратиться к нему в любой момент, и ему не нужно будет постоянно щелкать на кнопке возврата к предыдущей странице. Поскольку, находясь во фрейме, оглавление всегда будет под рукой, пользователю нужно будет просто выбрать другой его пункт и сразу же получить нужную информацию.
- Неподвижные элементы интерфейса. Можно зафиксировать на экране какое-то графическое изображение, например, логотип фирмы, в то время как остальная часть страницы будет прокручиваться в другом фрейме.
- Формы и результаты. Можно создать форму в одном фрейме, а в другом отобразить результаты запроса.
Обычные фреймы на данный момент считаются устаревшей технологией и не поддерживаются в HTML5. Не используйте обычные фреймы в своих проектах! В HTML5 тегов frame, frameset и noframes уже просто нет, вместо них предусмотрен один единственный тег iframe (встроенный или плавающий фрейм).
Тег
Тег заменяет тег и используется для разделения экрана. Имеет закрывающий тег.
Атрибуты тега
cols Делит экран по вертикали. Принимает значения в пикселях, в процентах или просто *. Значение * говорит о том, что конкретный столбец будет занимать всю остальную часть экрана rows Делит экран по горизонтали. Принимает значения в пикселях, в процентах или просто *. Значение * говорит о том, что конкретная строка будет занимать всю остальную часть экрана frameborder Определяет наличие рамок, т.е. границ фреймов. Принимает значения «yes» или «no» border Ширина рамки в пикселях bordercolor Цвет рамок. По умолчанию (если используется стандартная цветовая схема системы Windows) границы фреймов имеют тусклый, серый оттенок. Но при желании можно выбрать любой другой цвет. При определении цвета можно выбрать как его название, так и числовой эквивалент в системе RGB. Например, blue или #0000ff
В отдельном теге имеет смысл использовать только один из атрибутов – cols или rows. Это означает, что фреймовая структура будет состоять или только из столбцов, или только из строк. Чтобы создать строки внутри столбцов или столбцы внутри строк, вам потребуется вложенные контейнеры .
Пример
Используя сразу оба атрибута – и cols, и rows в одном теге , вы не сможете получить такое разбиение экрана.