2010-02-16 37 views
37

Làm thế nào để bạn làm cho DIV được thả nổi bên trái với nhau không được bọc khi trình duyệt được kích thước lại sao cho chế độ xem trở nên nhỏ hơn?Làm thế nào tôi có thể ngăn chặn các phần tử div thả nổi khi gói được kích thước lại?

div { 
    float: left; 
} 

Ví dụ khi trình duyệt hoàn toàn tối đa hóa dòng div s lên như thế này:

|div| |div| |div| |div| |div| |div| |div| |div| 

Nhưng khi tái kích thước trình duyệt nhỏ hơn điều này xảy ra:

|div| |div| |div| |div| |div| 
|div| |div| |div| 

thế nào có thể Tôi làm cho các div s không quấn khi trình duyệt được kích thước lại nhỏ hơn?

Trả lời

25

Đưa chúng vào một div khác có chiều rộng (hoặc chiều rộng tối thiểu) được chỉ định.

<div class="parentContainer"> 
    <div class="floater"></div> 
    <div class="floater"></div> 
    <div class="floater"></div> 
</div> 

.parentContainer { 
    /* The width of the parent needs to be equal to the total width of the children. 
    Be sure to include margins/padding/borders in the total. */ 
    width: 600px; 
    overflow: auto; 
} 

Nó cũng giúp có tràn: tự động chỉ định trên div chứa, để cho phép chiều cao của nó khớp với nổi con.

+0

Không thể làm việc này (http://jsfiddle.net/ajkochanowicz/tSpLx/) –

+0

@ajkochanowicz Điều gì không hiệu quả với bạn? Khi tôi thay đổi kích thước cửa sổ "kết quả" xuống dưới 400px, các phao vẫn còn trong cấu hình 3,3,2 của chúng như được quảng cáo. – AaronSieb

+0

Mỗi div được thả bên trái. Tôi không biết những gì là "quảng cáo" một cấu hình 3,3,2. Nếu tất cả chúng đều trôi nổi, thì tại sao chúng không tiếp tục chạy theo chiều ngang? –

9

Tận dụng tối div container xung quanh họ

.container { 
width: 500px; 
white-space: nowrap; 
overflow: visible/hidden/scroll - whichever suits you; 
} 
+0

đó không phải là trường hợp với các con 'float-left'. –

+0

Tôi đặt chiều rộng của vùng chứa thành 100% - hoạt động trong trường hợp của tôi. Có thể giúp bạn trong của bạn. –

7

tôi nhận ra rằng đó là thời trang để ghét trên bảng, nhưng họ có thể hữu ích.
http://jsfiddle.net/td6Uw/
Thay vì thả các div, hãy đặt chúng trong một bảng và bọc bảng bằng div bị giới hạn kích thước. TR sẽ ngăn chặn gói.
Ngoài ra, tôi đã sử dụng DIV bên trong TD để tạo kiểu ô dễ dàng hơn. Bạn có thể tạo kiểu cho các TD nếu bạn dành thời gian, nhưng tôi thấy chúng khó có thể tạo kiểu và thường bỏ đi và chỉ sử dụng phương pháp DIV-in-TD do fiddle của tôi sử dụng.

18

tôi khá muộn để các trò chơi, nhưng đây là những gì tôi đã phát hiện ra rằng hoạt động:

Hãy nói rằng bạn có một chuyển hướng cấu trúc như:

<nav> 
    <ul> 
     <li><a href="#">Example Link</a></li> 
     <li><a href="#">Example Link</a></li> 
     <li><a href="#">Example Link</a></li> 
    </ul> 
</nav> 

Để có được nó để hiển thị các liên kết nội tuyến, không bao giờ gói, bạn chỉ có thể sử dụng:

nav ul { 
    white-space: nowrap; 
} 

nav ul li { 
    display: table-cell; 
} 

Không có chiều rộng cố định hoặc bất cứ thứ gì bắt buộc.

Fiddle: http://jsfiddle.net/gdf3prb4/

+0

Đây là phương pháp IMO tốt nhất và phương pháp duy nhất dễ dàng hoạt động (ít nhất là đối với tôi). Các phương pháp khác tạo div bao bọc có chiều rộng cố định có thể hoạt động tốt nếu bạn biết chính xác số lượng pixel mình muốn, nhưng trong thế giới ngày nay, nơi kích thước màn hình luôn khác nhau, bạn không muốn dựa vào độ rộng cố định vì bạn tạo một trang web động. – edwardtyl

+1

Phương pháp này phù hợp nhất với tình huống của tôi (thiếu flexbox mà vẫn có vẻ hơi crapshoot trong các trình duyệt mà chúng tôi muốn hỗ trợ) - tuy nhiên trong trường hợp của tôi, tôi cũng cần hiển thị 'display: table' trên wrapper 'ul' để giữ nguyên 100% chiều cao của các cột bên trong. Với điều đó, 'white-space: nowrap' trên cha mẹ đó dường như không cần thiết, hoặc, chiều rộng cột cuối cùng phân phối không quá 100% hoàn toàn. – natevw

+0

@JacobTheDev Chắc chắn là phương pháp thành ngữ và linh hoạt hơn, nên được chấp nhận. Vui vì tôi có thể đẩy bạn qua các dấu 5k với upvote của tôi :-) – davnicwil

2

Thực sự rất đơn giản. Ví dụ về mã:

Element { 
white-space: nowrap; 
} 
+0

không thể hiểu tại sao đây không phải là câu trả lời số một ahha –

+0

Bởi golly này đã được nó. Không có gì khác ở đây làm việc. FWIW, tôi đặt nó lên thành phần "div" giống như cha mẹ. – Qix

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