Với cấu trúc đơn giản này:Khi một phần tử con tràn qua chiều ngang, tại sao phần đệm phải của phụ huynh bị bỏ qua?
<div id="parent">
<div id="child">Lorem ipsum</div>
</div>
với CSS này:
#parent {
width: 200px;
height: 200px;
padding: 20px;
overflow-x: scroll;
}
#child {
width: 500px;
}
Live Demo:http://jsfiddle.net/523me/5/
ý rằng phụ huynh có đệm 20px
và rằng đứa trẻ tràn theo chiều ngang (bởi vì nó rộng hơn). Nếu bạn di chuyển cha mẹ tất cả các con đường bên phải, bạn sẽ thấy rằng đứa trẻ chạm vào cạnh phải của phụ huynh.
Vì vậy, cha mẹ phải có đệm đúng, nhưng nó bị bỏ qua. Dường như khi trẻ có chiều rộng cố định, phần đệm bên phải của bố mẹ không áp dụng. (Điều này có được chỉ định bởi một tiêu chuẩn không? Tôi rất muốn biết. Vui lòng cho tôi biết nếu bạn tìm thấy bất kỳ điều gì!)
Có cách nào để ép buộc phải áp dụng trong trường hợp này mà không cần của các yếu tố từ dòng chảy (bằng cách thả nổi hoặc định vị)?
Ảnh chụp màn hình 1 - Đệm phải được bỏ qua. Đây là cách tất cả các trình duyệt hiện hành xử lý.
Ảnh chụp màn hình 2 - Áp dụng đệm phù hợp. Đây là những gì tôi đang cố gắng hoàn thành. (Btw, ảnh chụp màn hình là từ IE7, đó là trình duyệt duy nhất mà không bỏ qua các đệm bên phải.)
Điều thú vị là nó cần 'inline-block' để làm việc, như' block' [không làm điều đó] (http: // jsfiddle. net/fwTAS/1 /), nhưng người ta sẽ nghĩ rằng nó sẽ. +1 cho liên kết hiển thị nghiên cứu. – ScottS
@ScottS Vâng, đó là trình duyệt chết tiệt, tất cả đều có cách diễn giải riêng của họ về đặc tả CSS, nhiều như họ cố gắng duy trì nó (ngoại trừ mớ hỗn độn không chuẩn là IE). 'block' và bạn bè' inline-block' của nó nên chia sẻ tất cả các tính năng kiểu hộp của chúng và phân biệt theo cách của khối nội tuyến không cản trở luồng trang và trộn lẫn với các công cụ nội tuyến. Tôi chắc chắn muốn tìm hiểu thêm về hành vi cụ thể này. –
@Jota 'hiển thị: inline-block' rủi ro có hai trẻ em với nội dung nhỏ xuất hiện side-by-side: http://jsfiddle.net/523me/20/ +1 từ tôi cũng cho liên kết. –