Возможно, Вам пригодится
запись из моего бложика.
Другой способ, без выдёргивания элемента из потока. У любого элемента с
display: table-cell есть вертикальное выравнивание. Делаем таблицу на любой размер (хоть 100% экрана), внутри нее одну ячейку, у ячейки
vertical-align: middle;
text-align: center
Вставляем туда что угодно (кроме флоатов), и это что угодно центруется.
Если Вам не важен ie6,
display: table-cell можно задать даже body (именно так центруются картинки в опере, когда они открыты отдельно
).
UPD: На расположение блоков
text-align: center не распространиется, им нужно задавать:
margin-left: auto;
margin-right: auto;