ฉันทราบว่ามีการถามคำถามนี้เมื่อสองปีก่อน แต่สำหรับผู้ชมล่าสุดนี่เป็นทางเลือกอื่นซึ่งมีข้อดีบางประการเหนือโซลูชันของ Marc-François:
div {
height: 50px;
border: 1px solid blue;
line-height: 50px;
}
เราก็แค่บวกline-heightเท่ากับความสูงของ div ข้อดีคือตอนนี้คุณสามารถเปลี่ยนคุณสมบัติการแสดงผลของ div ได้ตามที่คุณเห็นว่าเหมาะสมinline-blockเป็นต้นและเนื้อหาจะยังคงอยู่กึ่งกลางในแนวตั้ง โซลูชันที่ยอมรับต้องการให้คุณปฏิบัติกับ div เป็นเซลล์ตาราง สิ่งนี้ควรทำงานได้อย่างสมบูรณ์แบบข้ามเบราว์เซอร์
ข้อได้เปรียบเพียงอย่างเดียวคือมันเป็นเพียงกฎ CSS หนึ่งกฎแทนที่จะเป็นสองข้อ :)
ไชโย!
<table>และใช้valign='middle'กับ<td>s ของมัน