That’s not quite right as height:100% on the body is often misunderstood. If you have a wrapper div in the page that you want to set to height:100% (e.g. for a sticky footer approach) then you must set html and body to height:100% (not required for the new vh units although some older versions of webkit still needed the fix below to work properly).
html,body{height:100%}
If you set body to min-height:100% instead of height:100% (as mentioned in the link above) then the first wrapper in your page cannot inherit any height from a min-height element and will be height:auto. Therefore the rule must be as above unless you are using the body element as your first page wrapper (which is fine for modern browsers but historically caused problems in older versions of IE and even modern versions of IE zoom incorrectly when the body is used as sized wrapper). For the sake of all those bugs then one extra wrapper is worth the price to pay.
The problem with using html,body{height:100%} only really occurs when using linear gradients on the body because the gradient will only stretch to 100% of the viewport and will not wrap the content should it go below the fold (this doesn’t happen with background images or colors).
In the page above ( http://www.pabriles.com/handTools.htm) with the 100% height removed the gradient now encompasses the content however if you shorten the content to a few lines you will see that the gradient now repeats from the bottom of the content rather than stretching down to the bottom of the viewport. This is not a nice effect and probably not what was wanted.
There are two methods to overcome this and one would be to set html to have a min-height of 100%.
html{min-height:100%}
This would allow the gradient to reach the bottom of the viewport on short content pages but also to keep track with the content as required. Unfortunately this does raise another issue in that on very long pages the gradient becomes stretched all the way down the page and so may not seem like much of a gradient at all.
My preferred approach is the set html and body to height:100% and then set the background-attachment to fixed on the body element which means the gradient will only ever be as tall as the viewport but of course will not scroll away. This means you get a full height gradient at all times no matter how much content you have.
As far as height:100% itself goes then you only need to understand that for an element to have its height defined in percentage means that the parent of that element has either a fixed height in pixels/ems/% (min or max-height is no use). However if the parent has its height in percentage also then the same rules apply for that parent and the unbroken chain of heights needs to be maintained right back to the root element.
In most cases height:100% is unnecessary and unwanted. The only time you really want to use it is on the html and body elements and only then if you want 100% high element in your page to start with (or for the linear gradient fix I gave above). Most other times you don’t need it.
Also note that when you set an element to height:100% then it remains at 100% height and cannot grow with content (unless it is display:table). Effectively this is what happens to the html and body element when we set height:100% and the content just overflows the body. This usually has no ill effect because backgrounds are still propagated below the viewport even with the height:100% set (except for linear gradients which seem to abide by their own rules).
It is well worth understanding the implications of height 