AFIK you really CANT do it that way.
You see, 100% height is an illusion. You set the container element ( lets say body) to 100%… that is in fact 100% of the height of the view port window. After that you set the direct children of that element to min-height:100%. So the reason why this works is as follows: The body is calculated to be 100% of height of the window. the first child of the body (#outer) is calculated in one two possible ways. If there is not enough content to fill the window outer is 100% the height of the body (#subpage ) if there is more than enough to fill the window then #outer offer flows and pushes out ( the window shows scroll) and thus it appears that there is always 100% height)
what you are doing , by setting everything to a 100%, in a sense, limits #outer and all the other divs to 100% the size of the window. so if there is more content than can fit in the height of the window… the content overflows BUT the container elements #outer, #grid, #footer-city, #top-white, #wrapper, #subpage DON’T STRETCH, to encompass this.
One would think that the answer would be to set the body to height:100% and all children to min-height:100% , but that doesnt work because min-height is calculated from a parents explicit height ( and since you need to set #outer to min-height:100% there is no “height:” set , and thus there is no way for #outer’s children to calculate their min-height:100%s… ( remember if you set “height:” then #outer wont stretch as needed and the illusion will break that way).
in short the real way to achieve 100% height is as follows … but you can only control up 2 levels.
CSS
html ,body { height:100%} #outer{min:-height:100%}