This combination simply can’t work.
Your outer element has a min-height – that means, it’s height actually depends on it’s content. If the content was larger than the 100%, then the actual height of the outer element would be more than those 100% the min-height specifies.
But now you want the inner element’s height to be a min-height of 100% as well – so the inner element would have to look for the outer element to determine its actual height, and the same thing the other way around for the outer element. That equation is just not solvable.
So you need to set an explicit height for the outer element: height:100%
EDIT pertaining to your comment:
Any explanation for why @George's work-around works?
height:1px
acts as a kind of “starting value” for the equation.
The inner element has a definitive height to start with now, 1px
– so for the outer element, the minimum of (100%
, height-determined-by-height-of-child-element
) can be determined now – and that will result in 100%
(of the height of the parent of that outer element, body
), which leads to a specific pixel value as the calculated value.
And now the min-height:100%
for the inner element can kick in as well – the outer element has an effective value in pixels now, and so the minimum of (100% of that-pixel-value
, 1px
) can be calculated for the inner element as well, which will result in that same pixel value as the outer element has effectively.