2011-08-17 22 views
5

Xem jsfiddle này ví dụ: http://jsfiddle.net/FrJRA/1/ và lưu ý rằng biên giới của nhịp bên trong chồng chéo div chứa.Tại sao khoảng đệm gây ra hộp hiển thị chồng lên bố cục của nó?

Tôi hiểu điều gì đang xảy ra. Nhưng tôi không hiểu tại sao. Tại sao kích thước của div không tăng lên để cho phép chiều cao mới của span?

Tôi biết tôi có thể sử dụng display: inline-block nếu tôi muốn điều này xảy ra, nhưng lý do đằng sau inline không làm tăng kích thước vùng chứa gốc là gì?

+0

URL của bạn là hơi sai. Nó nên được. http://jsfiddle.net/FrJRA/1 – scottheckel

+0

cảm ơn bạn! đã sửa. –

+0

"Tại sao kích thước của' div' lại tăng lên "Tại sao phải vậy? – BoltClock

Trả lời

7

Phần tử nội tuyến chỉ thay đổi thứ nguyên của chúng để đệm theo thứ nguyên trái/phải. Nó không làm tăng kích thước của phần tử theo các hướng trên cùng/dưới cùng. Đó là lý do tại sao bạn nhận thấy nó tăng nó ở hai bên nhưng không ở trên cùng/dưới cùng.

Cập nhật: Tìm thấy một phần của đặc điểm kỹ thuật W3 chạm vào điều này.

Các padding dọc, biên giới và lợi nhuận của một inline, không thay thế hộp bắt đầu ở phía trên và dưới cùng của khu vực nội dung, và không có gì để làm với 'line-height'. Nhưng chỉ có 'chiều cao dòng' được sử dụng khi tính chiều cao của hộp đường. CSS 2.1 Spec

+4

Một lời giải thích trực quan tốt http://www.maxdesign.com.au/articles/inline – BoltClock

3

Phần tử nội tuyến không có nghĩa là ảnh hưởng đến bố cục, đó là lý do tại sao block hoặc inline-block sẽ không nhưng khoảng cách inline sẽ không.

+0

Nhưng chúng * làm * ảnh hưởng đến bố cục; chúng ảnh hưởng đến chiều rộng của bố mẹ. Và lợi nhuận của họ thêm, đúng. Chỉ cần không đệm của họ ...? –

+0

Giải thích hình lục giác là tốt hơn; Tôi không chắc tại sao kích thước nội tuyến có thể được thay đổi một phần, tôi chỉ biết rằng lý thuyết là chúng không có nghĩa là tác động đến các yếu tố cấp khối. Nhưng bạn nói đúng: thực tế nhấn mạnh rằng hai người tương tác theo một cách nào đó. –

+0

Chúng không ảnh hưởng đến chiều rộng của bố mẹ, ngoại trừ trong trường hợp đặc biệt (nổi và các phần tử được định vị hoàn toàn không có 'chiều rộng' và nội dung ô trong bảng). – bobince

0

<div> không có nghĩa là thay đổi kích thước trong trường hợp này. Như <span> là một phần tử nội tuyến.

Nếu đó là các chức năng bạn đang tìm kiếm sửa đổi

div, span { 
    border: 1px solid gray; 
} 

với overflow:auto;

div, span { 
    border: 1px solid gray; 
    overflow:auto; 
} 
+0

Điều này đang đi sai hướng - không chỉ là div không lớn hơn, nhưng bây giờ nó cũng có thanh cuộn. –

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