Tôi đã nghiên cứu điều này một chút và từ những gì tôi nhận thấy bạn có bốn lựa chọn:
Phiên bản 1: div chính với hiển thị dưới dạng ô bảng
Nếu bạn không phiền khi sử dụng display:table-cell
div trên cha mẹ của mình, bạn có thể sử dụng các tùy chọn sau:
.area{
height: 100px;
width: 100px;
background: red;
margin:10px;
text-align: center;
display:table-cell;
vertical-align:middle;
}
Bản thử trực tiếp
Phiên bản 2: div chính với khối hiển thị và bảng-ô hiển thị nội dung
.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;
}
Bản thử trực tiếp
Phiên bản 3: Di động div chính và div nội dung dưới dạng ô bảng hiển thị
.area{
background: red;
margin:10px;
text-align: center;
display:block;
float: left;
}
.content {
display:table-cell;
vertical-align:middle;
height: 100px;
width: 100px;
}
Bản thử trực tiếp
Phiên bản 4: Vị trí div chính tương đối với vị trí nội dung tuyệt đối
Vấn đề duy nhất mà tôi gặp phải với phiên bản này là có vẻ như bạn sẽ phải tạo css cho mọi triển khai cụ thể. Lý do cho điều này là div nội dung cần phải có chiều cao đã đặt mà văn bản của bạn sẽ lấp đầy và phần đầu lề sẽ được xác định. Vấn đề này có thể được nhìn thấy trong bản demo. Bạn có thể làm cho nó hoạt động cho mọi tình huống theo cách thủ công bằng cách thay đổi% chiều cao của div nội dung của bạn và nhân nó với-5 để nhận giá trị margin-top của bạn.
.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;
}
Bản thử trực tiếp