Tôi có div sử dụng display: table-cell
chứa div con ... cả hai đều sử dụng thứ nguyên dựa trên phần trăm. Khi div con đó chứa nhiều hơn một số lượng văn bản nhất định (tùy thuộc vào kích thước phông chữ), nó bỏ qua quy tắc chiều cao của nó.Độ dài văn bản + ô bảng + chiều cao phần trăm - điều gì đang diễn ra ở đây?
Nhấp vào "văn bản chuyển đổi" nút sẽ chứng minh vấn đề này. Nó rõ rệt hơn trong Chrome & Safari nhưng Firefox cũng thể hiện sự cố.
Tôi mong đợi chiều cao của .child
div là 40px ... nhưng thay vào đó là khoảng 290px (trong Chrome & Safari). Tương tự, .table
phải có chiều cao là 240px.
HTML:
<div class="main">
<div class="item">
<div class="table">
<div class="table-cell">
<div class="child">
<div class="child-inner">
<p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Etiam porta sem malesuada magna, Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
</div>
</div>
</div>
</div>
</div>
</div>
CSS:
*,
*:after,
*:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.main {
position: relative;
margin: 20px;
width: 320px;
height: 480px;
}
.item {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: #eee;
overflow: hidden;
}
.table {
display: table;
position: absolute;
top: 2.083333333333333%;
left: 50%;
height: 50%;
width: 50%;
}
.table-cell {
position: relative;
display: table-cell;
height: 100%;
width: 100%;
vertical-align: middle;
}
.child {
position: relative;
overflow: hidden;
left: 0%;
height: 16.666666666%;
width: 93.75%;
background-color: rgba(255, 255, 255, 0.5);
}
.child-inner {
height: 100%;
width: 100%;
padding: 10px;
overflow: hidden;
overflow-y: auto;
}
p {
margin: 0;
padding: 0;
}
Có lý do nào bạn muốn sử dụng 'display: table'? –
http://jsfiddle.net/XuxCT/1/ đó là cách tôi sẽ làm CSS và HTML của bạn, nó vẫn có thể tốt hơn nhưng nó sẽ hoạt động trên tất cả các trình duyệt. –
display: table b/c Tôi cần hỗ trợ sự căn chỉnh theo chiều dọc của các phần tử con – busticated