100% to pełna wysokość rodziaca, który nie ma wysokości na całą stronę. Ustaw 100% wysokości odpowiednio na html i body. Jeśli chcesz, żeby odjąć wysokość headera - musisz ją zdefiniować i zastosować np. calc.
Footer swoją drogą na position fixed jest tragicznym rozwiązaniem, powinien zajmować treść i być na końcu strony, a nie przyklejony.