2013-05-10 11 views
7

Mam następujący układ z pojemników pływakowych 2 POZIOM:Czyszczenie pływaków tylko dla kontenera rodzica, a nie przodków?

<div id="navigation" style="float: left; width: 150px; height: 200px; background-color: #eee">Navigation</div> 
<div id="container" style="margin-left: 150px; background-color: #f00"> 
    <div style="float: left; width: 50%; height: 100px; background-color: #ff0">Block</div> 
    <div style="float: left; width: 50%; height: 20px; background-color: #f0f">Block</div> 
    <div style="clear: both"></div> 
    <div style="float: left; width: 50%; height: 50px; background-color: #00f">This Block</div> 
</div> 

Można go zobaczyć na żywo w http://jsfiddle.net/dNmNj/.

Moim zamiarem jest oczyścić pływaki dla #container, tak aby niebieski blok (This Block) pozostał tuż pod żółtym (nie różowy). Jednak wynik jest taki, że wyczyścił również pływaki dla #navigation.

Jak wyczyścić obiekty pływające tylko dla kontenera nadrzędnego, a nie dla kontenerów przodków?

+0

nie wiem, czy to jest to, co chcesz: http://jsfiddle.net/dNmNj/2/ (dodane 'overflow: hidden 'to' # container') – Pete

+0

Tak, dziękuję! Właśnie tego chciałem. Czy możesz wyjaśnić nieco, w jaki sposób nadmiar wpływa na pływaki? –

+0

dodała odpowiedź - ukryta rzecz ma coś wspólnego z przeglądarkami hasLayout – Pete

Odpowiedz

10

Można osiągnąć to, co chcesz, dodając overflow:hidden do #container:

http://jsfiddle.net/dNmNj/2

To jest dobry artykuł o polanie pływa

http://www.quirksmode.org/css/clearing.html

ale powodem Twój niebieski div jest upuszczenie tam, gdzie jest, ponieważ element div #container nie jest pływający - tylko margines pozostało

Poniżej przedstawiono przeróbką który jest bardziej kompatybilne z różnymi przeglądarkami:

http://jsfiddle.net/dNmNj/3/

+0

@He Shiming: Z wyjątkiem wyjaśnienia jest niepoprawna. 'overflow: hidden' nie usuwa float, nie jest to problem z hasLayout, jak już wspomniałem powyżej, i nie ma dużej różnicy w kompatybilności przeglądarki pomiędzy dwoma przykładami tutaj podanymi. – BoltClock

+0

@BoltClock, czy mógłbyś wyjaśnić, co robi w tym przypadku 'overflow: hidden'? Pracuję z Chrome i IE8, i właśnie uświadomiłem sobie, że ten układ nie działa w IE. –

+0

@Pete, wersja między przeglądarkami nie działa w IE8. Spróbuję zbadać. –

Powiązane problemy