3

画面の残りの部分を占めるiframeの上に任意のコンテンツを含むヘッダーを表示したい。私はこれをテーブルで動作させることができました:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style>
html, body, iframe, table, tr, td {
  margin: 0; padding: 0;
}
html, body, iframe, table, #content {
  height: 100%; width: 100%;
}
table {
  border-collapse: collapse;
}
iframe {
  border: 0;
}
</style>
</head>
<body>
  <table>
    <tr><td>
      <div id="header">
        <p>some arbitrary stuff in a header</p>
        <p>this is sized dynamically</p>
        <p>it's not a fixed size</p>
      </div>
    </td></tr>
    <tr><td id="content">
      <iframe src="http://www.bing.com/search?q=stackoverflow" />
    </td></tr>
  </table>
</body>
</html>

これはFirefoxとChromeで機能しますが、IE7では機能しません(理由はわかりません)。テーブルを使用せずに、これは私が得ることができる最も近いものです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style>
html, body {
  margin: 0; padding: 0;
  height: 100%;
}
iframe {
  margin: 0; padding: 0;
  width: 100%;
  border: 0;
}
</style>
</head>
<body>
  <div id="header">
    <p>some arbitrary stuff in a header</p>
    <p>this is sized dynamically</p>
    <p>it's not a fixed size</p>
  </div>
  <iframe src="http://www.bing.com/search?q=stackoverflow" />
</body>
</html>

これはすべてのブラウザで同じように見えますが、iframeが短すぎます。ただし、高さを100%に設定すると、画面と同じ大きさになり、2つのスクロールバーが表示されます(テーブルバージョンのIE7と同じ)。ブラウザウィンドウに残っているスペースをiframeが占有するようにしたいのですが、それ以上は占有しません。私はむしろJavascriptに頼る必要はありません。

4

6 に答える 6

1

CSS ボックス モデルには、使用可能な垂直方向のスペースという概念がないと思います。

于 2009-12-05T00:59:45.957 に答える
1

これはスペースを埋めるために機能します:

iframe {
    margin: 0; 
    padding: 0;
    width: 100%;
    height: 800px; (Whatever the height of your content is)
    border: 0;
}
于 2010-12-13T18:26:46.150 に答える
0

昔ながらのレギュラーフレームを使ってみませんか?iFrameのポイントは、通常の要素よりも拡張されないことです。

于 2009-11-13T19:21:54.573 に答える
0

これはあなたが必要とするもののように見えます。詳細については、ソースコードを参照してください。

于 2009-06-07T08:47:46.723 に答える
0

次のJavaScript関数を使用してみてください

<script language="javascript">
function adjust_iframe(oFrame)
{
    if(!oFrame) return;

    var win_height;
    var frm_height;     

    // Get page height Firefox/IE
    if(window.innerHeight) win_height = window.innerHeight;
 else if(document.body.clientHeight) win_height = document.body.clientHeight;   

    // Dtermine new height
    frm_height = win_height - oFrame.offsetTop - 15; // replace 15 accordingly

    // Set iframe height
    oFrame.style.height = frm_height + "px";
}
</script>   

次のように、ある時点で呼び出す必要があることに注意してください (例: Onload)。

<body onload="adjust_iframe(document.getElementById('myiframe'));">
于 2009-11-26T10:09:37.987 に答える