hazle caso a Javier
la especificación de height indica que si se le indica un %, va a ser un % de la altura de su elemento padre.
Así que el elemento padre de <div> probablemente sea <body>, y el de body es <html>
Por eso hay que indicar primero que HTML tenga 100% de altura (<html> no tiene elemento padre), y que el BODY tiene 100% de altura (todo esto se logra on lo que dijo Javier) y recién ahí te va a hacer caso el height:100% de la capa.
PD: muevo esto al foro de CSS.