W css jest coś takiego jak padding-top, lub vertical-align. To drugie jednak działa nie tak jak ludzie mysla. A jak myslą? Że ustawią sobie valign-middle i dany element będzie środkował w sobie inne elemnenty (tak jak w Tabelach). Nie. Vertical-align centruje WZGLEDEM SIEBIE jakies elementy (czyli kilka obok siebie).
Twój problem jest bardzo znany w webmasterce i wynika z tego że nie ma czegoś takiego jak wysokość strony. Strona z założenia ma zajmować najmniej jak może. Dlatego właśnie wszystkie te stopki na samym dole ekranu itp to po prostu brak zrozumienia dla idei

Jak to rozwiązać?
Albo padding-top, albo line-height, albo okrywasz dany tekst elementem i wtedy line-height, a dla elementu dziecka go zerujesz. Albo co jest jednym z lepszych - ustawiasz wyswitlanie danego elementu jako "table-cell" i wtedy sobie robisz jak kiedys na tabelkach. Ale stare IE tego nie kupią, co dla niektórych niekumatych jest nie do przejścia (argument: nie chcę tracić 0.9% odwiedzających używających IE6, wolę stracić >20% używających tablety itp). Pamiętaj że to nie jest złe podejście. Bo równie dobrze możesz dać dla DIV wyświetlanie typu inline.
Powiem ci szczerze że ja skrupulatnie po prostu unikam takich sytuacji. Dobre layouty nie mają takich miejsc. Wiem że to głupio brzmi, ale tak już jest