为什么iframe默认是内联元素?

aKz*_*enT 12 html css iframe layout html5

iframe =内联?

在调试一些布局问题时,我惊讶地发现<iframe>元素的默认显示属性为inline.

对我来说,这似乎很奇怪,特别是考虑到可以应用height,并width<iframe>由浏览器,这不应该是一个简单的内联元素的情况下尊重.

所以有人能解释一下这背后的原因吗?

演示

HTML

<iframe id="test"></iframe>
Run Code Online (Sandbox Code Playgroud)

CSS

alert($('#test').css('display'))
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/0tdLr9pq/

谢谢!

Ori*_*iol 13

因为HTML4规范如此说:

IFRAME元素允许作者在一个文本块中插入一个框架.在文本部分中插入内嵌框架就像通过OBJECT元素插入对象一样:它们都允许您在另一个文档的中间插入HTML文档,它们可能都与周围的文本对齐等.

" 与周围文本对齐 "部分意味着默认情况下它们不应该是块级别.

而且,通常,内联元素会忽略heightwidth属性:

10.3.1内联,未替换元素

width属性不适用.

10.6.1内联,未替换元素

height属性不适用.

但对于被替换的元素来说,情况并非如此iframe.这在10.3.210.6.2节中有解释.

  • @aKzenT 可能是因为 CSS 2.1 (2011) 引入了 `inline-block`,但 CSS 2 (1998) 没有它。因此,HTML 4.01 (1999) 不能推荐“inline-block”作为替换元素的默认样式。 (2认同)