Iframe vs. div in absolute positioning
我想知道为什么以下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | * { margin: 0; border: 0; padding: 0; } html, body { height: 100%; } body { position: relative; } iframe { display: block; background: tan; position: absolute; top: 0; bottom: 0; left: 0; right: 0; } |
1 | <iframe></iframe> |
但是,
div是不可替换的元素。绝对放置时,其宽度由10.3.7绝对放置的,不可替换的元素中定义的CSS规则给出-特别是在您的情况下,宽度是在步骤5中确定的。
'left' + 'margin-left' + 'border-left-width' + 'padding-left' +
'width' + 'padding-right' + 'border-right-width' + 'margin-right' +
'right' = width of containing block
用于CSS中除width之外所有值均固定的地方,因此计算width以保持相等。
iframe被视为已替换元素。绝对定位时,其宽度由10.3.8绝对定位的替换元素定义的CSS规则给出,该元素将宽度计算推迟到10.3.2内联替换元素的规则的最后一行-即,iframe不会具有固有宽度,因此计算出的宽度通常为300px。这类似于img元素,该元素也不会扩展为使用相同的CSS规则填充页面。但是图像通常确实具有固有宽度,因此使用宽度而不是300px。
类似的规则适用于高度计算。
将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | * { margin: 0; border: 0; padding: 0; } html, body { height: 100%; } body { position: relative; } iframe { display: block; background: tan; /* position: absolute; top: 0; bottom: 0; left: 0; right: 0; */ width:100%; height:100%; } |
1 | <iframe></iframe> |