Câu hỏi không phải là rất ngắn, nhưng thật dễ hiểu.Những điều kỳ lạ với biên lợi nhuận trên bàn
Đây là jsFiddle
Tôi có hai bảng lồng nhau, như thế:
Dưới đây là đánh dấu:
<table class="outer">
<tr>
<td></td>
<td>
<table class="inner">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</td>
<td></td>
</tr>
</table>
<style>
table, tr, td {
border: 1px solid black;
border-collapse: collapse;
}
table {
width: 100%;
}
.outer {
height: 100px;
}
.inner {
background-color: #ccc;
height: 50px;
}
</style>
Điều kỳ lạ 1st
Sau đó, tôi muốn thêm một hor tiêu cực lề izontal vào bảng bên:
.inner {
margin: 0 -10%;
}
Sản lượng dự kiến là một cái gì đó như thế này:
Nhưng thay vào đó, tôi có được điều này:
Vấn đề có thể được giải quyết bằng cách đặt bảng bên trong trong div:
<!-- outer table -->
<div class="wrapper">
<table class="inner-wrapped">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<!-- outer table -->
<style>
.wrapper {
margin: 0 -10%;
}
.inner-wrapped {
background-color: rgb(0,200,0);
height: 50px;
}
</style>
Điều kỳ lạ thứ 2
Nếu tôi đặt tiêu cực -10px lề horizonal (trước đây chúng tôi sử dụng phần trăm, không pixel), sau đó trong thêm bảng mà di chuyển chỉ sang bên trái (như trong trường hợp đầu tiên), nó sigifically giảm trong chiều rộng:
.inner {
margin: 0 -10px;
}
những câu hỏi
Tại sao cả hai điều này xảy ra?
Cách để giải quyết vấn đề là gì? Nó là một thực hành tốt để chỉ đơn giản là sử dụng một wrapper, như tôi, hoặc tôi nên sử dụng một cách khác, thông minh hơn?
On thanh tra chrome, nhìn vào các hộp lồng nhau. (màu cam trắng và xanh lá cây) mô tả chiều rộng, phần đệm và lề và nó sẽ có ý nghĩa hơn – Ibu
Vì ['bảng bố cục: tự động'] (https://www.w3.org/TR/CSS21/tables.html # auto-table-layout) không được xác định đầy đủ bởi thông số kỹ thuật, nó phụ thuộc vào việc triển khai thực hiện. Trình duyệt cố gắng đưa nội dung vào tài khoản, nhưng trong trường hợp của bạn, điều này gây ra rất nhiều định nghĩa hình tròn. Đừng dựa vào kết quả. Bạn có thể thử ['table-layout: fixed'] (https://www.w3.org/TR/CSS21/tables.html#fixed-table-layout) nếu bạn muốn một thuật toán được xác định rõ. – Oriol
@Oriol Cảm ơn, thú vị –