2012-10-10 28 views
8

Trong bảng CSS, ai đó có thể giúp tôi hiểu tại sao yếu tố đệm trong cột đầu tiên sẽ ảnh hưởng đến div trong cột thứ hai?Tại sao hiển thị: ô bảng bị ảnh hưởng bởi các phần tử trong các ô khác

Đây là ví dụ trong đó một đoạn có bộ đệm. DIV ở cột bên phải cũng được đệm đúng cách. Tôi đã có vấn đề tương tự khi chỉ định chiều cao dòng trên nội dung cột bên trái nhưng đơn giản hóa ví dụ cho câu hỏi này.

http://jsfiddle.net/APXT7/2/

Có rất nhiều tương tự/câu hỏi liên quan về table-cell nhưng tôi không thể tìm thấy một giải quyết cụ thể câu hỏi này.

+0

Thú vị. Tôi chưa bao giờ thấy một hiệu ứng như vậy. –

+0

Tôi không chắc mình hiểu câu hỏi. Bạn đang mong đợi điều gì sẽ xảy ra? – j08691

+0

@ j08691 Tôi không muốn khoảng cách phía trên văn bản trong 'ô' bên phải. Tôi thực sự muốn điều này là một div với một hình nền nhưng nó đơn giản hóa trong ví dụ để chứng minh vấn đề –

Trả lời

4

Điều này rất có thể là vấn đề về chiều cao dòng, thay vì một trong các phần đệm. Điều đó có nghĩa rằng, mặc dù bạn có thể nghi ngờ, không có padding thực sự được tuyên truyền cho cột bên phải của bạn (giá trị tính toán vẫn là số không). Tôi vẫn gọi đó là hiệu ứng phụ điều chỉnh phần đệm trên các yếu tố p của bạn.

Đệm trên đỉnh và dưới cùng của các yếu tố p đẩy đường cơ sở của chúng xuống. Điều này làm cho đường cơ sở của "ô" khác trên cùng một dòng/hàng cũng thay đổi. Tất nhiên, bạn có thể tìm thấy tất cả các gritty nitty vạch ra trong spec, nhưng kể từ khi cả hai "tế bào" có cùng một liên kết dọc (baseline), họ phải xếp hàng khi một trong những chuyển dịch.

+0

Tôi cảm thấy chắc chắn chấp nhận câu trả lời của bạn khi bạn đưa ra một lời giải thích tuyệt vời ... mặc dù bây giờ tôi đã để lại câu hỏi tiếp theo là cách tiếp cận tốt nhất để điều chỉnh chiều cao dòng khác nhau trong 'ô' liền kề. Dường như ô bên phải chỉ bị ảnh hưởng bởi phần tử FIRST trong ô bên phải. [cập nhật jsfiddle] (http://jsfiddle.net/nickpearce/qnCkd/1). Tôi sẽ tạo ra một câu hỏi mới. –

9

Bạn có thể sử dụng thuộc tính dọc thẳng hàng (vertical-align:top) trên lớp ô hoặc div như jsfiddle.net/j08691/APXT7/4. Vì những div này được hiển thị dưới dạng ô bảng, đây có thể là những gì bạn đang tìm kiếm.

+1

Cảm ơn @ j08691; điều này chắc chắn trả lời câu hỏi tiếp theo của tôi nhưng để được nghiêm ngặt câu trả lời đầu tiên giải quyết câu hỏi ban đầu của tôi về 'tại sao?'. –

1

Tôi đã tìm thấy một bản hack "khắc phục" điều này nhưng không biết tại sao. Điều đầu tiên bên trong các <div class='cell'> đặt <div class='hack'>&nbsp;</div> lớp hack là .hack { height: 0; } Điều này hoạt động nếu đặt trong ô bên trái hoặc bên phải

+0

Tôi tin câu trả lời của bạn hiển thị như dự định. Bạn được tự do chỉnh sửa thêm nếu cần. Cảm ơn bạn đã trả lời! –

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