2012-10-18 18 views
12

Tôi đang cố gắng sử dụng các phần tử ô trong hệ thống lưới sử dụng lề âm trên các hàng để loại bỏ máng trái và phải trên các phần tử lưới lồng nhau. Này hoạt động tốt trên nổi và inline-block yếu tố, nhưng yếu tố với display: table, đồng thời tôn trọng lề âm trái, bỏ qua lề phải tiêu cực:Không thể sử dụng lề phải âm trên phần tử bảng?

Table with negative right margin

Strange, eh? Một ví dụ đơn giản: http://jsfiddle.net/57FAN/1/

Tất cả các trình duyệt dường như đã thực hiện điều này theo cách tương tự, thật không may. Ý tưởng nào?

P.S. Hãy trì hoãn cuộc tranh luận về các yếu tố bảng- * để bố trí cho đến khi hộp flex được chuẩn hóa.

+0

Không có lý do gì để trì hoãn cuộc tranh luận về bảng cho bố trí giống như không có lý do để sử dụng bảng để bố trí. – Kyle

+3

@KyleSevenoaks OP không sử dụng bảng, anh ấy đang sử dụng các thuộc tính hiển thị bảng. Quy tắc là không sử dụng thẻ bảng cho bố cục vì nó được thiết kế để biểu thị dữ liệu dạng bảng, không phải là bạn không thể tạo các phần tử không phải bảng trông giống như một bảng. – cimmanon

+0

Ồ, tôi không hiểu. Tất nhiên sử dụng màn hình: bảng; tài sản là hoàn toàn hợp pháp (không mỉa mai). Cám ơn giải thích rõ ràng. – Kyle

Trả lời

6

Bảng không bỏ qua lề âm, nhưng chỉ có chiều rộng 100% và dịch chuyển 5px sang trái. Bạn sẽ cần một "100% + 2 * 5px" để điền vào khu vực màu xám hoàn toàn.

Hàng không có chiều rộng, do đó sử dụng toàn bộ chiều rộng có sẵn.

Nếu bạn muốn sử dụng

.row { 
    margin: 0 -5px; 
    width: 100%; 
} 

bạn sẽ thấy rằng độ rộng đều bình đẳng

+0

Ah, bạn đã đúng. Tôi không xem xét chiều rộng đó: tự động trên phần tử cấp khối không phải lúc nào cũng giống như chiều rộng: 100%. –

0

Mã của bạn có nhiều marginpadding tài sản của. vì vậy nó trông như thế. Ở đây tôi sửa một số mã.

Fiddle DEMO

+0

Cảm ơn Selva, nhưng lề và phần đệm là một phần của hệ thống lưới và không thể xóa được. –

Các vấn đề liên quan