Claro. Su div está siendo muy obediente y hace lo que debe.
Supongo que sabe que las medidas en % toman como referente no al elemento al que se las declara, sino a su padre o ancestro más próximo.
Así que en base a lo anterior, vamos de dentro hacia afuera:
Su contenedor mide el 100% de su padre, que en su ejemplo es body -->
Usted le ha dicho que la altura de body sea el 100% de su padre, que es html -->
Pero resulta que html no tiene declarada altura, y sus hijos son elementos vacíos, luego la altura de html es 0 (cero)
el 100% de 0 es 0
Añada a su css:
Verá qué estirón dan body y #content