2010-02-16 9 views
37

W jaki sposób sprawiasz, że DIV, które są unoszone obok siebie, nie owijają się, gdy przeglądarka jest zmieniana tak, że obszar wyświetlania staje się mniejszy?Jak zapobiec zawijaniu elementów div typu floated przy zmianie rozmiaru przeglądarki?

div { 
    float: left; 
} 

Na przykład, gdy przeglądarka jest całkowicie zmaksymalizowane div s linię w górę tak:

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

Ale gdy przeglądarka zmianie wielkości mniejszy to się dzieje:

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

jak można Sprawiasz, że div nie jest zawijany, gdy przeglądarka ma mniejszy rozmiar w przeglądarce?

Odpowiedz

25

Zawiń je w inny element div, który ma określoną szerokość (lub szerokość minimalną).

<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; 
} 

Pomaga również w przepełnieniu: automatycznie określona w polu zawierającym, aby jej wysokość pasowała do podrzędnego elementu pływającego.

+0

Nie można uzyskać to do pracy (http://jsfiddle.net/ajkochanowicz/tSpLx/) –

+0

@ajkochanowicz Co nie działa dla Ciebie? Kiedy zmieniam rozmiar okna "wynikowego" na mniej niż 400px, pływaki pozostają w reklamowej konfiguracji 3,3,2. – AaronSieb

+0

Każdy element div jest przenoszony w lewo. Nie wiem, co to jest "reklama" w konfiguracji 3,3,2. Jeśli wszystkie zostaną uniesione w lewo, dlaczego nie będą dalej spływać z poziomu div w poziomie? –

9

Marka div kontenera wokół nich

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

Tak nie jest w przypadku dzieci "po lewej stronie". –

+0

Ustawiłem szerokość pojemnika na 100% - działa w moim przypadku. Może ci pomóc w twojej. –

7

zdaję sobie sprawę, że jest to modne nienawidzić na stołach, ale mogą być przydatne.
http://jsfiddle.net/td6Uw/ Zamiast unoszenia elementów div, umieść je w tabeli i zawiń tabelę za pomocą ograniczonego rozmiaru div. TR zapobiegnie owijaniu.
Użyłem również DIV wewnątrz TD, aby ułatwić stylizację komórek. Jeśli spędzasz czas, możesz stylizować niszczycieli, ale trudno mi je zaprojektować i zwykle wyciskać i używać tylko metody DIV-in-TD używanej przez moje skrzypce.

18

jestem dość późno do gry, ale oto co znalazłem, że działa:

Powiedzmy masz nawigację strukturę:

<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> 

Aby zmusić go do wyświetlania linków wbudowany, bez zawijania, można po prostu użyć:

nav ul { 
    white-space: nowrap; 
} 

nav ul li { 
    display: table-cell; 
} 

Brak stałych szerokości lub czegokolwiek, co jest wymagane.

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

+0

To jest najlepsza metoda IMO i jedyna metoda, która z łatwością działa (przynajmniej dla mnie). Inne metody tworzenia opakowującego elementu div o stałej szerokości mogą działać dobrze, jeśli wiesz dokładnie, ile pikseli chcesz, ale w dzisiejszym świecie, gdzie rozmiary ekranu są zawsze inne, nie chcesz polegać na stałych szerokościach, ponieważ to zapobiega od tworzenia dynamicznej witryny internetowej. – edwardtyl

+1

Ta metoda była najbardziej odpowiednia dla mojej sytuacji (w przeciwieństwie do flexbox, która wciąż wydaje się być trochę crapshoot w przeglądarkach, które chcieliśmy obsługiwać) - jednak w moim przypadku stwierdziłem, że potrzebuję również 'display: table' na owinąć 'ul', aby zachować oryginalną wysokość 100% kolumn wewnątrz. W związku z tym, 'white-space: nowrap' na tym rodzica również nie wydaje się konieczne, szerokość kolumn w końcu dystrybucji nie przekracza w sumie 100% w sumie. – natevw

+0

@JacobTheDev Zdecydowanie bardziej idiomatyczna i elastyczna metoda powinna zostać zaakceptowana. Cieszę się, że mogłem popchnąć cię ponad znak 5k z moim upstreamiem :-) – davnicwil

2

Jest rzeczywiście bardzo prosty. Przykład kodu:

Element { 
white-space: nowrap; 
} 
+0

nie może zrozumieć, dlaczego to nie jest numer jeden odpowiedź ahha –

+0

Przez golly to było to. Nic tu nie działało. FWIW, umieściłem to na rodzimym elemencie "div". – Qix

Powiązane problemy