Więcej o stylu float
Poniżej przedstawiam kilka rysunków pozwalających lepiej zrozumieć zasadę działania stylu float. Ważne jest, że tak naprawdę nie to nie element opływa inny element ale tekst, który jest w nim zawarty (dotyczy to elementów blokowych). Dlatego tak jak pokazano na rysunku ramki elementów opływajacych zachodzą na element opływany, ale tekst w nich zawarty już nie.
Jeśli chcemy usunąć opływanie należy użyć stylu clear posiadającego trzy opcje: right, left, both odpowiadające odpowiednim stylom float. Zastosowanie tego właśnie stylu w elemencie trzecim powoduje, że znalazł się on poniżej elemntu pierwszego, któremu przypisano styl float: left, zamiast go opływać.
Gdy chcemy elementom dodać ramkę, ale jednocześnie nie chcemy by widoczne było nakładanie się elementów, musimy zastosować odpowiednie marginesy, które "odepchną" cały element (łącznie z jego ramką).
Wszystkie powyższe zasady mają także zastosowanie w przypadku elementów zagnieżdzonych. Na rysunku pokazano 3 elementy <div>, z których pierwszy ma przypisany styl float: left, drugi opływa ten pierwszy, a trzeci znajduje się wewnątrz drugiego. Widać, że zarówno ramka elementu drugiego jak i zagnieżdżonego w nim elementu trzeciego zachodzi na element pierwszy.
Poniższy rysunek przedstawia cztery elementy i "zagnieżdżone" opływanie, które zachowyje się dokładnie tak jak można było tego oczekiwać. Występują one w następującej kolejności:
- element pierwszy ze stylem float: left,
- element drugi opływający ten pierwszy po prawej stronie,
- element trzeci znajdujący się wewnątrz elementu drugiego i posiadający styl float: left,
- element czwarty znajdujący się wewnątrz elementu drugiego i opływający element trzeci po prawej stronie.
Jednak używając stylu float do budowy struktury witryny należy uważać na stosowanie stylu clear. Poniżej rysunek pokazuje cztery elementy w następującej kolejności:
- element pierwszy ze stylem float: left i ustawioną wyskością większą niż wysokość elementu trzeciego (w celach prezentacyjnych),
- element drugi opływający ten pierwszy po prawej stronie,
- element trzeci znajdujący się wewnątrz elementu drugiego i posiadający styl float: left,
- element czwarty znajdujący się wewnątrz elementu drugiego i posiadający styl clear: left.
Jak widać styl clear: left nie kasuje ostatniego opływania, ale wszystkie poprzednie, w związku z czym element czwarty nie znalazł się bezpośrenio pod elementem trzecim, ale został "zepchnięty" także pod element pierwszy (zepchnięty został tylko w pionie, ponieważ w poziomie ograniczał go element drugi).
Przykładowy layout
Przykładowy layout uzyskany dzięki stylowi float i kod potrzebny do jego uzyskania. Zastosowałem w nim "box model hack", żeby layout wyglądał poprawnie także w starszych przeglądarkach. A tutaj (http://www.mynthon.net/d/css/ex/float.html) można zobaczyć jak taki układ zachowuje się w rzeczywistości.
.top{
border: 1px solid red;
width: 100%;
height: 100px;
}
.left{
width: 300px;
border: 1px solid red;
padding: 10px;
margin: 0px;
float: left;
voice-family: "\"}\"";
voice-family: inherit;
width: 278px;
}
html>body .left{
width: 278px;
}
.content{
border: 1px solid red;
margin: 0px 0px 0px 200px;
padding: 10px;
}
XHTML 1.0
Wyślij mi maila / kontakt