height:100%
能生效有两种情况。
第一种是父级有显性高度,即写了具体值。当然从 html 一直往下都赋予height:100%
也是属于这种情况。(html=>body=>...=>父级=>目标元素)。
当然设置 max-height 与 min-height 对
height:100%
是没有用的
第二种就是自身绝对定位,父级相对定位脱离文档流。其实原理和上述是一致的(最近的相对定位元素会被认为是最上级的 dom)。
解决这个问题可以尝试给予height: inherit
它和height:100%
功能类似。但在解决自身是定位元素时可以有奇效。
另一个就是给予显性高度,当然这一办法几乎没用。能写死高度就不会出现这个问题了。
再一个就是无奈的子绝父相了,给予父级相对定位,自身绝对定位。
注意:子元素绝对定位是计算父元素的 padding 值的。而传统的height:100
是不计算的。当然使用全局的box-sizing: border-box
补充:某些国产浏览器中 flex 不能继承高度。这也不难理解毕竟在控制台父级 height 显示的并不是显性高度。