To jest coś, co musiałem zrobić wiele razy, a spójne rozwiązanie nadal wymaga dodania niewielkiego niesemantycznego znacznika i kilku hacków specyficznych dla przeglądarki. Kiedy otrzymamy obsługę CSS 3 przez przeglądarkę, uzyskasz wyśrodkowanie w pionie bez grzechu.
Aby lepiej wyjaśnić tę technikę, możesz zajrzeć do artykułu, z którego ją zaadaptowałem , ale w zasadzie obejmuje to dodanie dodatkowego elementu i zastosowanie różnych stylów w IE i przeglądarkach, które obsługują position:table\table-cell
elementy inne niż tabele.
<div class="valign-outer">
<div class="valign-middle">
<div class="valign-inner">
Excuse me. What did you sleep in your clothes again last night. Really. You're gonna be in the car with her. Hey, not too early I sleep in on Saturday. Oh, McFly, your shoe's untied. Don't be so gullible, McFly. You got the place fixed up nice, McFly. I have you're car towed all the way to your house and all you've got for me is light beer. What are you looking at, butthead. Say hi to your mom for me.
</div>
</div>
</div>
<style>
/* Non-structural styling */
.valign-outer { height: 400px; border: 1px solid red; }
.valign-inner { border: 1px solid blue; }
</style>
<!--[if lte IE 7]>
<style>
/* For IE7 and earlier */
.valign-outer { position: relative; overflow: hidden; }
.valign-middle { position: absolute; top: 50%; }
.valign-inner { position: relative; top: -50% }
</style>
<![endif]-->
<!--[if gt IE 7]> -->
<style>
/* For other browsers */
.valign-outer { position: static; display: table; overflow: hidden; }
.valign-middle { position: static; display: table-cell; vertical-align: middle; width: 100%; }
</style>
Istnieje wiele sposobów (hacków) stosowania stylów w określonych zestawach przeglądarek. Użyłem komentarzy warunkowych, ale spójrz na powyższy artykuł, aby zobaczyć dwie inne techniki.
Uwaga: wyśrodkowanie w pionie można uzyskać w prosty sposób, jeśli znasz jakieś wysokości z wyprzedzeniem, próbujesz wyśrodkować pojedynczy wiersz tekstu lub w kilku innych przypadkach. Jeśli masz więcej szczegółów, wrzuć je, ponieważ może istnieć metoda, która nie wymaga hacków przeglądarki ani nie-semantycznych znaczników.
Aktualizacja: Zaczynamy otrzymywać lepszą obsługę przeglądarki CSS3, wprowadzając zarówno flex-box, jak i transformacje jako alternatywne metody uzyskiwania wyśrodkowania w pionie (między innymi). Zobacz to drugie pytanie, aby uzyskać więcej informacji o nowoczesnych metodach, ale pamiętaj, że obsługa przeglądarek jest nadal szkicowa dla CSS3.