นี่คือสิ่งที่ฉันต้องทำหลายครั้งและวิธีแก้ปัญหาที่สอดคล้องกันยังคงต้องการให้คุณเพิ่มมาร์กอัปที่ไม่ใช่ความหมายและแฮ็กเฉพาะเบราว์เซอร์บางอย่าง เมื่อเราได้รับการสนับสนุนเบราว์เซอร์สำหรับ css 3 คุณจะได้รับการจัดกึ่งกลางแนวตั้งโดยไม่ทำบาป
สำหรับคำอธิบายที่ดีกว่าของเทคนิคคุณสามารถดูบทความที่ฉันดัดแปลงมาแต่โดยทั่วไปแล้วมันเกี่ยวข้องกับการเพิ่มองค์ประกอบพิเศษและใช้สไตล์ที่แตกต่างใน IE และเบราว์เซอร์ที่สนับสนุนposition:table\table-cell
องค์ประกอบที่ไม่ใช่ตาราง
<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>
มีหลายวิธี (แฮ็ก) ในการใช้สไตล์ในชุดเบราว์เซอร์ที่เฉพาะเจาะจง ฉันใช้ความเห็นแบบมีเงื่อนไข แต่ดูที่บทความที่ลิงก์ด้านบนเพื่อดูเทคนิคอื่นสองวิธี
หมายเหตุ: มีวิธีง่าย ๆ ในการจัดกึ่งกลางแนวตั้งหากคุณทราบความสูงล่วงหน้าหากคุณพยายามจัดกึ่งกลางข้อความบรรทัดเดียวหรือในหลายกรณี หากคุณมีรายละเอียดเพิ่มเติมให้ทำการโยนทิ้งเพราะอาจมีวิธีที่ไม่ต้องการแฮ็กเบราว์เซอร์หรือมาร์กอัปที่ไม่ใช่ความหมาย
อัปเดต:เราเริ่มได้รับการสนับสนุนเบราว์เซอร์ที่ดีขึ้นสำหรับ CSS3 นำทั้งกล่องเฟล็กซ์และแปลงเป็นวิธีทางเลือกสำหรับการจัดกึ่งกลางแนวตั้ง (ท่ามกลางเอฟเฟกต์อื่น ๆ ) ดูคำถามอื่นสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการที่ทันสมัย แต่โปรดทราบว่าการสนับสนุนเบราว์เซอร์ยังคงเป็นร่างสำหรับ CSS3