Bạn có thể sử dụng line-height: 50px;
, bạn sẽ không cần vertical-align: middle;
ở đó.
Bản giới thiệu
Ở trên sẽ thất bại nếu bạn có nhiều dòng, vì vậy trong trường hợp đó, bạn có thể bọc văn bản của mình bằng cách sử dụng span
và hơn là sử dụng display: table-cell;
và display: table;
cùng với đó vertical-align: middle;
, cũng đừng quên sử dụng width: 100%;
cho#abc
Bản giới thiệu
#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;
}
Một giải pháp khác tôi có thể nghĩ đến ở đây là sử dụng thuộc transform
tính với translateY()
vị trí Y
rõ ràng là viết tắt của Trục Y. Nó khá thẳng về phía trước ... Tất cả những gì bạn cần làm là đặt vị trí các yếu tố thành absolute
và vị trí sau 50%
từ vị trí top
và dịch từ trục của nó với âm-50%
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Bản giới thiệu
Lưu ý rằng điều này sẽ không được hỗ trợ trên các trình duyệt cũ hơn, ví dụ IE8, nhưng bạn có thể tạo IE9 và các phiên bản trình duyệt cũ hơn của Chrome và Firefox bằng cách sử dụng -ms, -moz
và -webkit
tiền tố tương ứng.
Để biết thêm thông tin về transform
, bạn có thể tham khảo ở đây .