Два фрейма одна полоса прокрутки

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

Я хочу, чтобы страница выглядела как одна страница, которая также может прокручиваться, но на самом деле страница состоит из двух фреймов. Используя это...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<!-- Info from: http://www.webxpertz.net/forums/showthread.php?t=257 -->
<!-- Using this... -->

<meta NAME="Description" content="Outer frame(OneBaredFrame) used to wrap the header and body frames" />
<meta HTTP-EQUIV="Cache-Control" content="no-cache" />
<meta HTTP-EQUIV="pragma" content="no-cache" />

<title></title>

</head>

<frameset rows="1,*" border="0" frameborder="no">

<frame src="javascript:<HTML></HTML>" name="dummy" id="dummy" 
frameborder="no" marginheight="0" marginwidth="0" noresize="noresize" scrolling="no"></frame>

<frame src="index_inner.html" name="OneBaredFrame"
 id="OneBaredFrame" frameborder="no" marginheight="0" marginwidth="0"  noresize="noresize" scrolling="yes"></frame>

<!-- the bottom frame above if scrolling="yes" doesn't show a scrollbar for me? -->

<!-- the top frame above if scrolling="yes" does show a scrollbar for me if rows="100,*" say? -->

</frameset>

</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">


<head>

<meta NAME="Description" content="Frames for within a scrollable frame">

<meta HTTP-EQUIV="Cache-Control" content="no-cache">

<meta HTTP-EQUIV="pragma" content="no-cache">

<title></title>

</head>

 <!-- My header and body frames need to scroll together, 
 so I am using another frameset (the one above) to enclose these frames -->

<frameset rows="215,*" border="0" frameborder="no"> 
<frame src="Header.html" id="header" name="header" frameborder="no"
 marginheight="0" marginwidth="0" noresize="noresize" scrolling="no"></frame>

<frame src="index_body.html" id ="body" name="body" frameborder="no" 
marginheight="0" marginwidth="0" noresize="noresize" scrolling="no"></frame>

<!-- when the above are set to scrolling="yes" scrollbars appear for me for each -->

</frameset>

</html> 

person Carpenter    schedule 21.11.2010    source источник
comment
Задавать вопрос внутри тела кода (в виде комментария) — очень плохая практика. Задайте вопрос, опубликуйте код — его прочитает больше людей. Я исправлю это для вас на этот раз.   -  person Oded    schedule 21.11.2010
comment
Спасибо за помощь, Одед, мне понадобилась целая вечность, чтобы попытаться опубликовать то, что я сделал.   -  person Carpenter    schedule 21.11.2010


Ответы (2)


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

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


Обновлять:

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

Вам нужно добавить новую страницу с набором фреймов, как показано ниже, убедившись, что вторая страница указывает на ваш набор фреймов (и установите SCROLLING="NO" для обоих наборов фреймов:

<FRAMESET ROWS="0%,100%"
  BORDER="0"
  FRAMEBORDER="NO">
  <FRAME SRC=""
    NAME="dummy"
    FRAMEBORDER="NO"
    MARGINHEIGHT="0"
    MARGINWIDTH="0"
    NORESIZE
    SCROLLING="NO">
  </FRAME>
  <FRAME SRC="*url to your frameset*"
    NAME="myframes"
    FRAMEBORDER="NO"
    MARGINHEIGHT="0"
    MARGINWIDTH="0"
    NORESIZE
    SCROLLING="YES">
  </FRAME>
</FRAMESET>
person Oded    schedule 21.11.2010
comment
Слоуи находится на webxpertz.net/forums/showthread.php?t=257 Неправильно тогда - просто убедиться? - person Carpenter; 21.11.2010
comment
@плотник - он прав. Обходной путь будет работать. Однако при этом появляется третий кадр. - person Oded; 21.11.2010
comment
Еще раз спасибо, но любая помощь в моем коде, чтобы заставить его работать, поскольку я пытался следовать тому, что он дал, но не мог заставить его работать ... Я не умный, поэтому будьте нежны со мной - если можете :) - person Carpenter; 21.11.2010

Я получил то, что вы ищете, используя IFRAME.

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

Я использовал это для веб-страницы, которую я только что развернул, и она работает как шарм.

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

<BODY>
<CENTER>
  <DIV style="display:table-cell; width:800; ">
      <iframe WIDTH=800 HEIGHT=220 src="menu.html" name="topframe" frameBorder=0 SCROLLING=NO></iframe>
      <iframe WIDTH=800 HEIGHT=380 src="home.html" name="contentframe" frameBorder=0 SCROLLING=AUTO></iframe>
      <iframe WIDTH=800 HEIGHT=220 src="menu.html" name="bottomframe" frameBorder=0 SCROLLING=NO></iframe>
  </DIV>
<CENTER>
</BODY>

Ссылки в menu.html с TARGET="contentframe" делают то, что вы хотите.

person user334639    schedule 29.03.2013