คุณสามารถใช้line-height: 50px;
คุณไม่จำเป็นต้องvertical-align: middle;
มี
การสาธิต
ดังกล่าวข้างต้นจะล้มเหลวถ้าคุณได้หลายบรรทัดดังนั้นในกรณีที่คุณสามารถตัดข้อความของคุณโดยใช้span
และกว่าการใช้display: table-cell;
และdisplay: table;
พร้อมกับvertical-align: middle;
ยังไม่ลืมที่จะใช้width: 100%;
สำหรับ#abc
การสาธิต
#abc{
font:Verdana, Geneva, sans-serif;
font-size:18px;
text-align:left;
background-color:#0F0;
height:50px;
display: table;
width: 100%;
}
#abc span {
vertical-align:middle;
display: table-cell;
}
อีกวิธีหนึ่งที่ฉันคิดได้ที่นี่คือการใช้transform
คุณสมบัติtranslateY()
ที่Y
ชัดเจนว่าย่อมาจากแกน Y มันค่อนข้างตรงไปตรงมา ... สิ่งที่คุณต้องทำคือตั้งค่าตำแหน่งองค์ประกอบไปที่absolute
ตำแหน่งต่อมา50%
จากtop
และแปลจากแกนเป็นลบ-50%
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
การสาธิต
โปรดทราบว่าสิ่งนี้ไม่ได้รับการสนับสนุนในเบราว์เซอร์รุ่นเก่าเช่น IE8 แต่คุณสามารถสร้าง IE9 และเบราว์เซอร์ Chrome และ Firefox เวอร์ชันเก่าอื่น ๆ ได้โดยใช้-ms, -moz
และ-webkit
คำนำหน้าตามลำดับ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการtransform
ที่คุณสามารถดูที่นี่