Ta div qui fait 100%, doit être dans un parent qui lui contient une hauteur défini.
Exemple, je veux une div qui fait toute la page, mon body doit alors faire 100 % de hauteur, et l'<html> aussi, car pour que mon body fasse 100%, html doit avoir une hauteur défini, donc en gros : http://jsfiddle.net/maLsLf1u/
Exemple², tu as une div parent qui fait 200px de hauteur, tu as une div enfant qui fait 100 %, cette div enfant fera 200px !
Si tu as une hauteur défini en px, pas besoin de définir une hauteur sur ton body et html :)