Clear float – eltünt a háttér?!

Bejegyzés időpontja: 2008. 10. 15.
Kulcsszavak: | |

Aki weboldalak szerkesztésével foglalkozik, bizonyára találkozott már a float tulajdonság különlegességeivel. A probléma leginkább az szokott lenni, hogy egy div, ami “float: left;”  vagy “float: right;” tulajdonsággal van ellátva, kilép az őt tartalmazó div kereteiből, ezért eltűnik a szülő div háttere.

A probléma megoldására sima HTML oldal esetében a legkézenfekvőbb és legegyszerűbb, ha a szülő divnek a CSSben adunk egy “display: table”-t, ez a megoldás nekem működött a legnépszerűbb böngészőkben.

XHTML oldalaknál több megoldás létezik. A legtöbben azt alkalmazzák, hogy a szülő div végébe egy

<div style="clear: both;"></div>

kódot illesztenek. Azonban ha nem szeretnénk a HTML kódunkat összerondítani oda nem illő dolgokkal, akkor CSS-ből is megoldható a probléma:

div.container:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

Ezzel a kóddal a CSS-ből hozunk létre egy láthatatlan divet, ami tartalmazza a clear:both tulajdonságot, de nem jelenik meg a böngészőben.

Végül pedig a legegyszerűbb megoldás, amit találtam:

Adjunk egy “overflow: auto” -t a CSS-ben a szülő divnek. (néhány böngésző – főként az IE6 – igényli, hogy egy magassági vagy szélességi értéket is kapjon a doboz, különben nem működik!)

A bejegyzés szerzőjéről:

Radics Ferenc egy mostanában elterjedő emberi faj, a szabadúszó webfejlesztők táborába tartozó egyed. Mint minden ilyen, szereti a laptopját ami már a kezéhez nőtt, mindene az igényes webdizájn, valamint a (X)HTML, CSS, Javascript programozási nyelvek, de gyűlöli az IE6-ot.