Jika itu adalah satu baris teks dan / atau gambar, maka itu mudah dilakukan. Cukup gunakan:
text-align: center;
vertical-align: middle;
line-height: 90px; /* The same as your div height */
Itu dia. Jika bisa beberapa baris, maka itu agak lebih rumit. Tetapi ada solusi di http://pmob.co.uk/ . Cari "perataan vertikal".
Karena mereka cenderung menjadi peretasan atau menambahkan div yang rumit ... Saya biasanya menggunakan tabel dengan sel tunggal untuk melakukannya ... untuk membuatnya sesederhana mungkin.
Pembaruan untuk 2020:
Kecuali Anda perlu membuatnya bekerja di browser sebelumnya seperti Internet Explorer 10, Anda dapat menggunakan flexbox. Ini didukung secara luas oleh semua browser utama saat ini . Pada dasarnya, wadah perlu ditentukan sebagai wadah fleksibel, bersama dengan pemusatan sepanjang sumbu utama dan silangnya:
#container {
display: flex;
justify-content: center;
align-items: center;
}
Untuk menentukan lebar tetap untuk anak, yang disebut "item fleksibel":
#content {
flex: 0 0 120px;
}
Contoh: http://jsfiddle.net/2woqsef1/1/
Untuk menyusutkan konten, itu bahkan lebih sederhana: hapus saja flex: ...
baris dari item fleksibel, dan itu secara otomatis menyusut.
Contoh: http://jsfiddle.net/2woqsef1/2/
Contoh di atas telah diuji pada peramban utama termasuk MS Edge dan Internet Explorer 11.
Satu catatan teknis jika Anda perlu menyesuaikannya: di dalam item fleksibel, karena item fleksibel ini bukan wadah fleksibel itu sendiri, cara lama CSS non-flexbox berfungsi seperti yang diharapkan. Namun, jika Anda menambahkan item flex tambahan ke wadah flex saat ini, kedua item flex tersebut akan ditempatkan secara horizontal. Untuk membuatnya ditempatkan secara vertikal, tambahkan flex-direction: column;
wadah fleksibel. Ini adalah cara kerjanya antara wadah fleksibel dan wadahnya elemen anak langsungnya .
Ada metode alternatif untuk melakukan pemusatan: dengan tidak menentukan center
distribusi pada sumbu utama dan silang untuk wadah fleksibel, tetapi sebaliknya menentukan margin: auto
item fleksibel untuk mengambil semua ruang ekstra di keempat arah, dan margin yang didistribusikan secara merata akan membuat item fleksibel terpusat ke segala arah. Ini berfungsi kecuali jika ada beberapa item fleksibel. Juga, teknik ini berfungsi pada MS Edge tetapi tidak pada Internet Explorer 11.
Pembaruan untuk 2016/2017:
Ini dapat dilakukan dengan lebih umum transform
, dan bekerja dengan baik bahkan di browser lama seperti Internet Explorer 10 dan Internet Explorer 11. Ini dapat mendukung banyak baris teks:
position: relative;
top: 50%;
transform: translateY(-50%);
Contoh: https://jsfiddle.net/wb8u02kL/1/
Untuk mengecilkan lebar:
Solusi di atas menggunakan lebar tetap untuk area konten. Untuk menggunakan lebar yang dibungkus menyusut, gunakan
position: relative;
float: left;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
Contoh: https://jsfiddle.net/wb8u02kL/2/
Jika dukungan untuk Internet Explorer 10 diperlukan, maka flexbox tidak akan berfungsi dan metode di atas dan line-height
metode itu akan berfungsi. Kalau tidak, flexbox akan melakukan pekerjaan itu.
text-align:center
tidak melakukan "bagian vertikal"?