html - 如何让 iframe 占用所有剩余空间

标签 html css iframe height

我有以下代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="shortcut icon" href="res/favicon.ico" />
<title>My website</title>

<style type="text/css">
    .wrap {
    position:relative;
    margin:0 auto;
    width:900px;
    text-align:center;
}

#header, #footer {
    width:100%;
    float:left;
}

#footer {
    position:fixed;
    bottom:0;
    z-index:999999;
}
</style>

</head>
<body>
  <div id="header">
      <div class="wrap">
           <div class="logo">
                <h1>Header</h1>
           </div>
           <div>Menu goes here</div>
      </div>
 </div>

 <iframe src="http://www.cnn.com"></iframe>

  <div id="footer">
      <div class="wrap">
           <h2>Footer</h2>
      </div>
 </div>
</body>
</html>

如何设置 iframe 以使其占用页眉和页脚之间的所有剩余宽度和高度?

最佳答案

解决了,需要一些 javascript :)

实例:
http://simplestudio.rs/yard/framed/framed.html (离线)

代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="shortcut icon" href="res/favicon.ico" />
<title>My website</title>

<style type="text/css">

#framed {

    position: relative;
    width: 100%;
    height: 100%;   

}

.wrap {
    position:relative;
    margin:0 auto;
    width:900px;
    text-align:center;
}

#header, #footer {
    width:100%;
    float:left;
}

#footer {
    position:fixed;
    bottom:0;
    z-index:999999;
}
</style>

    <script>

        var resize = setInterval(function(){chng_iframe_height('framed','header','footer')},500);

        function chng_iframe_height(ifrid,hid,fid) {

            var eheight = window.innerHeight;
            var ifrobj = document.getElementById(ifrid); 
            var header = document.getElementById(hid); 
            var footer = document.getElementById(fid); 
            var header_height = getComputedStyle(header).height;
            var footer_height = getComputedStyle(footer).height;

            var reserved_height = parseInt(header_height) + parseInt(footer_height);

            ifrobj.style.height = eheight - reserved_height +"px";     

        }
    </script>

</head>
<body onload="chng_iframe_height('framed','header','footer');">
  <div id="header">
      <div class="wrap">
           <div class="logo">
                <h1>Header</h1>
           </div>
           <div>Menu goes here</div>
      </div>
 </div>

 <iframe src="http://www.cnn.com" id="framed"></iframe>

  <div id="footer">
      <div class="wrap">
           <h2>Footer</h2>
      </div>
 </div>
</body>
</html>

基本上,我计算页眉和页脚呈现的高度,获取 window.innerHeight 并从该数字中我知道页眉和页脚之间剩下多少 px,所以我将该值分配给 iframe 并且 whoila 它起作用了......

我还设置了 setinterval 每半秒调用一次该函数,因此如果您调整窗口大小,它几乎会立即更新 iframe 高度...

关于html - 如何让 iframe 占用所有剩余空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12753053/

相关文章:

jquery - 使用 simplemodal,在 iframe 内的内容加载时显示加载微调器

javascript - 可能/如何在鼠标焦点上调整 iframe 大小?

html - iframe 不会嵌入 YouTube channel 的最新视频 (HTML)

html - @-moz-document url-prefix() 不工作

javascript - Bootstrap 4.1.1 页脚与右边框居中对齐

html - 如何在 Angular Material 13 中添加标题和主体表之间的空间?

javascript - 特殊字符前换行

jquery - 按高度自适应元素

javascript - 网页设计中的广泛图像

javascript - Shareaholic 分享按钮未加载