全屏iframe,高度为100%

tes*_*dtv 227 html javascript css iframe html-frames

所有浏览器都支持iframe height = 100%吗?

我使用doctype作为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)

在我的iframe代码中,如果我说:

<iframe src="xyz.pdf" width="100%" height="100%" />
Run Code Online (Sandbox Code Playgroud)

我的意思是它实际上会占用剩余页面的高度(因为顶部有另一个框架,固定高度为50px)所有主流浏览器(IE/Firefox/Safari)都支持这种格式吗?

关于滚动条,即使我说scrolling="no",我可以在Firefox中看到禁用的滚动条...如何完全隐藏滚动条并自动设置iframe高度?

Axe*_*Axe 261

你可以使用frameset作为前面的答案状态,但是如果你坚持使用iFrames,下面的两个例子应该可以工作:

<body style="margin:0px;padding:0px;overflow:hidden">
    <iframe src="http://www.youraddress.com" frameborder="0" style="overflow:hidden;height:100%;width:100%" height="100%" width="100%"></iframe>
</body>
Run Code Online (Sandbox Code Playgroud)

替代:

<body style="margin:0px;padding:0px;overflow:hidden">
    <iframe src="http://www.youraddress.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:100%;width:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="100%" width="100%"></iframe>
</body>
Run Code Online (Sandbox Code Playgroud)

要隐藏滚动,请使用上面显示的2个替代方法:

<body style="margin:0px;padding:0px;overflow:hidden">
    <iframe src="http://www.youraddress.com" frameborder="0" style="overflow:hidden;height:150%;width:150%" height="150%" width="150%"></iframe>
</body>
Run Code Online (Sandbox Code Playgroud)

Hack第二个例子:

<body style="margin:0px;padding:0px;overflow:hidden">
    <iframe src="http://www.youraddress.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:150%;width:150%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="150%" width="150%"></iframe>
</body>
Run Code Online (Sandbox Code Playgroud)

要隐藏iFrame的滚动条,父级overflow: hidden将隐藏滚动条,并使iFrame的宽度和高度达到150%,这会强制页面外的滚动条,因为主体没有滚动条我们可能不希望iframe超出页面的界限.这会全屏隐藏iFrame的滚动条!

  • 要使iframe正确使用100%,父级需要100%.在较新的doctypes中,html和body标签不会自动100%.当我添加高度:100%的html和身体然后它完美无缺.所以,我认为问题的正确答案是来自rudie的答案,除了我必须保留我的xhtml文档类型.另请注意,不需要溢出规则.然后滚动条按预期工作 - 自动. (15认同)
  • 听起来不错..虽然只有一个问题......为什么我们需要使用style ="height:100%; width:100%;" 当我们无论如何说iframe height ="100%"width ="100%" (3认同)
  • [这个SO答案](http://stackoverflow.com/a/5272579/107625)也很简短. (3认同)
  • 仅供参考“HTML &lt;frameset&gt; 标记。HTML5 不支持。” - 参考。https://www.w3schools.com/tags/tag_frameset.asp。 (3认同)

Jos*_*ier 160

3种创建全屏的方法iframe:




  • 我最终使用了选项1的变体...我使用宽度:100%和高度:100vh因为我拉的源非常宽而且iframe包含在div中.优秀的解决方 谢谢. (4认同)
  • 添加```display:block```起到了防止双重滚动条的作用 (2认同)

Rud*_*die 44

1.将您的DOCTYPE更改为不太严格的内容.不要使用XHTML; 这太傻了.只需使用HTML 5 doctype就可以了:

<!doctype html>
Run Code Online (Sandbox Code Playgroud)

2.您可能需要确保(取决于浏览器)iframe的父级具有高度.而它的父母.而它的父母.等等:

html, body { height: 100%; }
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,重要的部分是html和body标签需要高度:100%.谢谢. (9认同)

Not*_*Jay 32

我遇到了同样的问题,我把一个iframe拉成了一个div.试试这个:

<iframe src="http://stackoverflow.com/" frameborder="0" scrolling="yes" seamless="seamless" style="display:block; width:100%; height:100vh;"></iframe>
Run Code Online (Sandbox Code Playgroud)

高度设置为100vh,代表视口高度.此外,宽度可以设置为100vw,但如果源文件响应(您的帧将变得非常宽),您可能会遇到问题.

  • 据我所知,任何浏览器都不支持无缝 (3认同)
  • 在花费了比我愿意承认的更多的时间来解决这个问题之后,这正是我所需要的。除了我没有使用网站之外,我使用了另一个 HTML 文件,这需要对视口高度进行细微调整,现在就可以开始了。谢谢你! (2认同)

Iva*_*van 27

这对我来说效果非常好(仅当iframe内容来自同一个域时):

<script type="text/javascript">
function calcHeight(iframeElement){
    var the_height=  iframeElement.contentWindow.document.body.scrollHeight;
    iframeElement.height=  the_height;
}
</script>
<iframe src="./page.html" onLoad="calcHeight(this);" frameborder="0" scrolling="no" id="the_iframe" width="100%" ></iframe>
Run Code Online (Sandbox Code Playgroud)

  • 这只有在`iframe``src`与父页面在同一个域上时才有效,否则你将在`contentWindow.document`上得到一个权限被拒绝的错误. (21认同)

小智 6

body {
    margin: 0;            /* Reset default margin */
}
iframe {
    display: block;       /* iframes are inline by default */
    background: #000;
    border: none;         /* Reset default border */
    height: 100vh;        /* Viewport-relative units */
    width: 100vw;
}
Run Code Online (Sandbox Code Playgroud)
<iframe></iframe>
Run Code Online (Sandbox Code Playgroud)


Hei*_*ini 6

<iframe src="" style="top:0;left: 0;width:100%;height: 100%; position: absolute; border: none"></iframe>


Jir*_*ren 6

要获得 iframe 内没有滚动条的全屏 iframe,请使用以下 css。不需要更多

iframe{
            height: 100vh;
            width: 100vw
        }
    
    iframe::-webkit-scrollbar {
        display: none;
    }
Run Code Online (Sandbox Code Playgroud)


小智 5

以下测试工作

<iframe style="width:100%; height:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" src="index.html" frameborder="0" height="100%" width="100%"></iframe>
Run Code Online (Sandbox Code Playgroud)

  • 这里已经有 14 个其他答案。您能解释一下您的答案如何更好或至少与其他 14 个不同吗? (4认同)

blu*_*ter 5

<iframe src="http://youraddress.com" style="width: 100%; height: 100vh;">

</iframe>
Run Code Online (Sandbox Code Playgroud)