元素竖向的百分比设定是相对于容器的高度吗?

  • 如果是 height,是相对于父容器的 高度。
  • 如果是 padding 或者 margin 竖直方向的属性,则是相对于父容器的 宽度。

补充:CSS 规范里把 margin-top/bottom、padding-top/bottom 的百分比定义为"相对于包含块的宽度(containing block width)",这是一个常见踩坑点。比如 padding-top: 50% 在父容器 200px 宽时会得到 100px 的内边距,而不是父高度的一半。

另外 top、bottom 这类定位属性的百分比才是相对于包含块的高度,所以 position: absolute; top: 50% 表示相对包含块高度的 50%。