2012-11-18 11 views
5

Szukałem już od wielu godzin i nie mogłem znaleźć praktycznego rozwiązania dla mojego problemu, więc możesz mi dać radę.Dopasuj div (szerokość) wokół pływających divów

Czego chcę, to div, który owija się wokół pływających div wewnątrz. Zawijanie wysokości nie stanowi dla mnie problemu, ale szerokość nie jest zawijana w prawo, jeśli przeglądarka jest zmieniana na szerokość, gdzie pływające elementy zeskakują w dół.

Oto niektóre przykładowy kod:

HTML:

<div class="wrapper"> 

    <div class="block1"> 
    </div> 

    <div class="block2"> 
    </div> 
</div> 

CSS:

body { 
    border: solid 1px green; 
} 

.wrapper { 
    border: solid 1px red; 
    display: table; 
} 

div { 
    display: block; 
} 

.block1 { 
    float: left; 
    width: 390px; 
    height: 390px; 
    background-color: blue; 
} 

.block2 { 
    float: left; 
    width: 390px; 
    height: 390px; 
    background-color: yellow; 
} 

Więc zasadniczo chcę div owijania, aby zawsze mieć szerokość div wewnątrz potrzebie. Zmieniając rozmiar okna i pozwalając, aby prawy div przeskoczył pod lewą stronę, div zawijający powinien teraz mieć szerokość 390px dla tego przykładu.

Potrzebuję tego rozwiązania w przypadku responsywnej witryny, którą próbuję utworzyć i potrzebuję jej tak szybko, jak to możliwe.

Preferowane byłoby czyste rozwiązanie CSS, ale także JS lub jquery.

+1

Chcesz, aby szerokość rodzica była wielokrotnością około 390 przez cały czas? Potrzebuję do tego javascriptu. – Toni

Odpowiedz

0

Nie można użyć szerokości lub szerokości minimalnej, aby zachować 780px div na "pulpicie", a następnie na niższych szerokościach ekranu, które powodowałyby zawijanie bloków, ustaw szerokość rodzica na 390px. Owinąć je w odpowiednich zapytań mediów i bobs wuja .....

HTH

0

Javascript jest wysoce prawdopodobne, jedynym sposobem ...

użyciu $(window).resize

oraz: Javascript Browser Width

Po poznaniu szerokości przeglądarki można podzielić dostępne miejsce i określić szerokość elementu opakowania, a tym samym zawinąć pływające elementy div.

+0

Zapytania o media też mogą pomóc .. –

0

dodać

white-space: nowrap; 

do .wrapper

1

Można użyć zapytania o media CSS na div otoki.Tak:

@media (max-width: 783px) { 
.wrapper { 
    max-width: 390px; 
    } 
} 

Zobacz this codepen na przykład:

+0

thx za odpowiedź. Niestety, nawet w podanym przykładzie, tak naprawdę nie zawija się do 390px, jeśli zmieniam rozmiar okna. Moment, w którym zmieniam rozmiar jest wystarczająco mały, aby odpowiedni div mógł zeskoczyć w dół, po prostu używa tej samej szerokości co ciało. LG – Balfear

+0

Dzieje się tak dlatego, że masz granice ustawione na elementach div, dzięki czemu możesz zobaczyć, co jest gdzie. Będziesz musiał obliczyć swoje własne piksele dla swojej implementacji, ale w tym przykładzie zaktualizowałem kodek, aby użyć maksymalnej szerokości 783 piksele w zapytaniu o media (w celu uwzględnienia wartości granicy 4 px). http://codepen.io/anon/pen/mgxBz – keithwyland

0

jak o modyfikacji tej klasy

.wrapper { 
border: solid 1px red; 
display:table; 
**white-space:nowrap;** 
} 

a może, jeśli chcesz, aby lewy div poprawkę, więc jeśli zmiana rozmiaru okna tylko właściwy div zostanie zmieniony na:

zrób to dla właściwego div:

display: block; 
position: absolute; 
top:0; 
right:0; 
margin-left: *your_fixed_left* px; 
+0

1. rozwiązanie nie działa dla mnie w chrome, ponieważ prawy div nawet nie zeskoczył, kiedy zmieniam rozmiar okna:/ – Balfear

+0

że white-space nowrap, aby twój wewnętrzny div nie zeskoczył i nie ustawiał się na prawym wierzchu, gdy zewnętrzny div się zmienił, jeśli chcesz ukryć wewnętrzny div (z tą poprawką szerokość: 390px rozmiar) dodaj przepełnienie: ukryte do .wrappera (ty określić min-szerokość na opakowaniu div) – heriawan

0

Thx za pomoc wszystkim,

skończyło się robi to z jakiegoś JavaScript odczytując rozmiar okna i ustawienie szerokości otoki ręcznie.

dziękuję!

0
<div class="wrapper"> 

    <div style="display:table-row"> 

     <div class="block1"> 
     </div> 

     <div class="block2"> 
     </div> 

    </div> 

</div> 



.wrapper { 

    border: solid 1px red; 
    display: table; 

} 

.block1 { 

    display:table-cell; 
    width: 390px; 
    height: 390px; 
    background-color: blue; 

} 

.block2 { 

    display:table-cell; 
    width: 390px; 
    height: 390px; 
    background-color: yellow; 

} 
Powiązane problemy