关于height:100%的生效问题

当父元素html和body没有设置height:100%时候,子元素设置height:100%是不生效的,但是如果子元素添加了定位,就可以生效,为什么,还有什么别的方式可以让元素height:100%生效,为什么

首先CSS的高度宽度是继承关系。(但是如果子元素添加了定位,就可以生效)是因为开启定位,元素会脱离文档流,和其他没有开启的定位的元素不在同一个文档流。
元素设定显示的高度值
普通流元素的百分比高度起作用的话,其父级元素必须有一个生效的高度值!
非绝对定位元素的百分比是相对于content box计算的。
元素使用绝对定位
绝对定位的百分比是相对于父元素(这里的父元素是定位元素,如果没有,那么就是相对于窗口)的padding box计算的。
例如: