You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何未显式设置高度时my-frame-container的高度为200px?

为什么.my-frame-container的高度是200px?

这其实是CSS中百分比内边距的计算规则导致的,咱们一步步拆解背后的逻辑:

1. 百分比内边距的计算基准是父元素宽度

CSS规范明确规定:元素的padding(包括padding-bottom)使用百分比单位时,计算基准是父元素的宽度,而非高度。

你的.my-frame-container的父元素是.right-modal,后者被显式设置了width:200px,所以padding-bottom:100%就等价于padding-bottom:200px。

2. height:0 + padding-bottom的占位技巧

你给.my-frame-container设置height:0,同时用padding-bottom:100%来撑开容器高度——这是前端实现固定宽高比容器的经典技巧。因为padding会占据容器的空间,所以容器的实际高度就等于padding-bottom的计算值(200px),和它的宽度(继承父元素的200px)一致,形成了正方形容器。

3. 子元素高度的继承逻辑

.my-frame-content是绝对定位元素,你给它设置了height:100%,这里的100%是相对于它的包含块(.my-frame-container)的高度,也就是200px,所以它的高度也会被限制为200px。哪怕内部的.box总高度远超这个值,因为.my-frame-container设置了overflow:hidden,超出部分会直接被隐藏。

验证方法

你可以试试把.right-modal的宽度改成300px,此时.my-frame-container的高度会自动变成300px,这就能直接印证上述逻辑。

内容的提问来源于stack exchange,提问作者Pragatheeswaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:03:38