[英]Iframe embedded with 100% height in a div has strange bottom-margin
我想将一个height 100%
和width 100%
的iframe
元素包装到一个div with fixed size
的div with fixed size
。
我是这样试的:
<div style="height: 410px; width: 480px; border: 1px solid black; overflow: auto;">
<iframe src="" style="border: none; background: blue;" height="100%" width="100%"></iframe>
</div>
使用较旧的文档类型它可以完美运行,但是一旦我添加了 HTML5 文档类型<!DOCTYPE html>
就会有一个令人不安的滚动条,它可以在周围的 div 内上下移动整个iframe
元素,如果你完全向下滚动是一个奇怪的空间,我无法解释。
当我删除overflow: auto;
来自 div 样式的属性也可以工作,但这不能成为解决方案。
我不明白的是为什么iframe
元素下方有这个奇怪的空间/边距?
这是您可以自己尝试的演示: http : //jsfiddle.net/tmuecksch/b5jgn/
我在 Safari 7.0 和 Firefox 23.0.1 中尝试过。
为您的iframe
元素添加display:block
– 没有它,它会呈现为一个内联框,因此为可能显示在同一行。
见小提琴: http : //jsfiddle.net/b5jgn/2/
( vertical-align:bottom
iframe 的vertical-align:bottom
也可以。)
iframe { vertical-align:bottom; }
要么
iframe { display:block; }
原因是overflow:auto
允许 div 在内部内容不适合时滚动,并且 100% 高度会导致两种样式在某种程度上发生冲突。 如果他们在理论上没有,iframe 可以继续扩展。
将overflow:auto
更改为overflow:hidden
甚至删除overflow
都可以解决此问题
在我看来,最好使用 HTML5 的新属性seamless
。 您可以在此处阅读有关此属性和其他新属性的更多信息。 因此,您的代码将如下所示: <iframe src="" class="" seamless="seamless" style="border: none; background: blue;" height="100%" width="100%"></iframe>
<iframe src="" class="" seamless="seamless" style="border: none; background: blue;" height="100%" width="100%"></iframe>
。 不幸的是,一个相当大的问题是浏览器对这个属性的支持。 但是,2013 年更新的浏览器应该可以运行。 如果行得通,现在就让我来吧! 我在 Opera 15.0 和 Chrome 29 中对其进行了测试,并且可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.