Ini adalah sesuatu yang perlu saya lakukan berkali-kali dan solusi yang konsisten masih mengharuskan Anda menambahkan markup non-semantik dan beberapa peretas khusus peramban. Ketika kami mendapatkan dukungan browser untuk css 3, Anda akan mendapatkan pemusatan vertikal tanpa dosa.
Untuk penjelasan teknik yang lebih baik, Anda dapat melihat artikel yang saya adaptasi , tetapi pada dasarnya melibatkan penambahan elemen tambahan dan menerapkan gaya yang berbeda di IE dan browser yang mendukung position:table\table-cell
elemen non-tabel.
<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>
Ada banyak cara (retasan) untuk menerapkan gaya pada set browser tertentu. Saya menggunakan komentar kondisional tetapi melihat artikel yang terhubung di atas untuk melihat dua teknik lainnya.
Catatan: Ada cara sederhana untuk mendapatkan pemusatan vertikal jika Anda mengetahui ketinggian sebelumnya, jika Anda mencoba memusatkan satu baris teks, atau dalam beberapa kasus lainnya. Jika Anda memiliki perincian lebih lanjut, masukkan saja karena mungkin ada metode yang tidak memerlukan peramban peramban atau markup non-semantik.
Pembaruan: Kami mulai mendapatkan dukungan browser yang lebih baik untuk CSS3, menjadikan flex-box dan transformasi sebagai metode alternatif untuk mendapatkan pemusatan vertikal (di antara efek lainnya). Lihat pertanyaan lain ini untuk informasi lebih lanjut tentang metode modern, tetapi perlu diingat bahwa dukungan browser masih samar untuk CSS3.