Trong ví dụ đơn giản này, tôi có một tủ sách với sách nằm trên giá sách. Tủ sách là phần tử ngoài cùng với chiều rộng được xác định. Sách trên kệ sách được cho là xuất hiện từ trái sang phải mà không cần gói. Kệ sách được cho là để kéo dài chiều rộng của nó để hiển thị tất cả các cuốn sách trên kệ của nó. Tất cả giá sách cần phải có cùng chiều rộng, chiều rộng của giá sách rộng nhất.Làm cho chiều rộng phần tử giãn ra để phù hợp với con của nó khi phụ huynh của phần tử tràn: tự động;
HTML của tôi:
<div class="bookcase">
<div class="bookshelf">
<div class="book">
<div class="book">
<div class="book">
</div>
<div class="bookshelf">
<div class="book">
<div class="book">
<div class="book">
<div class="book">
</div>
<div class="bookshelf">
<div class="book">
</div>
</div>
CSS của tôi:
.bookcase {
width: 40%;
height: 300px;
margin: 0 auto;
background: lightgrey;
overflow-x: auto;
}
.bookshelf {
background: lightgreen;
white-space: nowrap;
}
.book {
display: inline-block;
height: 60px;
width: 60px;
background: pink;
}
Vấn đề với mã PIN hiện tại là khi chiều rộng tủ sách là nhỏ hơn so với kệ sách dài nhất và tủ sách làm cho quá tải có thể cuộn được, các yếu tố giá sách không căng ra để phù hợp với tất cả các sách. Hiện tại các kệ có vẻ như đang xác định chiều rộng của chúng bằng với giá gốc, giá sách.
Những hình ảnh này minh họa sự cố. Đây là cách tủ sách trông bình thường, mà là tốt:
hoặc
Nhưng khi bạn di chuyển sang phải khi tủ sách hẹp, nền màu xanh lá cây của các kệ sách bị cắt, thay vì đạt đến phía bên phải của sổ đỏ lần cuối:
làm thế nào tôi có thể làm cho giá sách lấy toàn bộ chiều rộng của phần tử tràn, chứ không phải là chiều rộng của vùng chứa mẹ tủ sách?
Tôi biết tất cả chúng ta đều ghét bảng, nhưng điều này nghe có vẻ giống như một công việc cho một bảng. – Smeegs
Điều duy nhất tôi có thể gợi ý là hiển thị từng '.bookshelf' dưới dạng' table-row': http://jsfiddle.net/qolami/gr9rg/4/ –
@HashemQolami 'table-row' hoạt động khi có tràn, nhưng dường như vỡ khi '.bookcase' rộng hơn' .bookshelf' rộng nhất. – BigMacAttack