Saya telah meneliti ini sedikit dan dari apa yang saya temukan, Anda memiliki empat opsi:
Versi 1: Div induk dengan tampilan sebagai sel tabel
Jika Anda tidak keberatan menggunakan display:table-cell
di div induk, Anda dapat menggunakan opsi berikut:
.area{
height: 100px;
width: 100px;
background: red;
margin:10px;
text-align: center;
display:table-cell;
vertical-align:middle;
}
DEMO langsung
Versi 2: Div induk dengan blok tampilan dan sel tabel tampilan konten
.area{
height: 100px;
width: 100px;
background: red;
margin:10px;
text-align: center;
display:block;
}
.content {
height: 100px;
width: 100px;
display:table-cell;
vertical-align:middle;
}
DEMO langsung
Versi 3: Div induk mengambang dan div konten sebagai sel tabel tampilan
.area{
background: red;
margin:10px;
text-align: center;
display:block;
float: left;
}
.content {
display:table-cell;
vertical-align:middle;
height: 100px;
width: 100px;
}
DEMO langsung
Versi 4: Posisi div induk relatif dengan posisi konten absolut
Satu-satunya masalah yang saya miliki dengan versi ini adalah sepertinya Anda harus membuat css untuk setiap implementasi tertentu. Alasan untuk ini adalah div konten harus memiliki tinggi yang ditetapkan yang akan diisi teks Anda dan margin-top akan ditentukan darinya. Masalah ini bisa dilihat di demo. Anda bisa membuatnya berfungsi untuk setiap skenario secara manual dengan mengubah% tinggi div konten Anda dan mengalikannya dengan -.5 untuk mendapatkan nilai margin atas Anda.
.area{
position:relative;
display:block;
height:100px;
width:100px;
border:1px solid black;
background:red;
margin:10px;
}
.content {
position:absolute;
top:50%;
height:50%;
width:100px;
margin-top:-25%;
text-align:center;
}
DEMO langsung