Ce face float și clear
float scoate elementul din fluxul normal și îl împinge spre marginea stângă sau dreaptă a containerului. Textul și elementele inline din jur se așază pe lângă el. Utilizarea de bază, care rămâne valabilă și azi: o imagine într-un articol, înconjurată de paragrafe.
clear spune unui element să nu stea lângă elementele flotante, ci să coboare sub ele (left, right sau both). Pentru ca un container să-și cuprindă copiii flotanți (altfel înălțimea lui devine 0), folosește display: flow-root, varianta modernă a vechiului „clearfix”.
Pentru layout-uri de pagină (coloane, bare laterale, grile de carduri) nu mai folosi float: Flexbox și Grid fac aceeași treabă mai simplu și mai previzibil.
Valori uzuale
| Valoare | Descriere |
|---|---|
left / right |
Elementul se lipește de marginea stângă / dreaptă; restul conținutului curge pe lângă. |
inline-start / inline-end |
Variante logice: urmează direcția textului (stânga în română, dreapta în arabă). |
none |
Valoarea implicită: elementul rămâne în fluxul normal. |
clear: both |
Elementul coboară sub toate elementele flotante dinaintea lui. |
display: flow-root |
Pus pe container, îl face să-și cuprindă complet copiii flotanți. |
Exemple
Exemplul 1: Imagine într-un articol, cu textul în jurul ei
Fotografia se lipește la stânga, iar paragrafele despre Iași curg pe lângă ea, cu o margine de respiro.
.articol img.foto-iasi {
float: left;
width: 240px;
margin: 0 16px 8px 0;
border-radius: 8px;
}
Efect vizual în browser
Imaginea de 240px stă în colțul din stânga sus al articolului. Primele rânduri de text stau în dreapta ei, la 16px distanță; sub imagine, textul revine pe toată lățimea.
Exemplul 2: Container care își cuprinde imaginea flotantă
Fără flow-root, chenarul cardului ar trece prin imagine, pentru că imaginea flotantă nu adaugă înălțime părintelui.
.card-produs {
display: flow-root;
border: 1px solid #cbd5e1;
padding: 12px;
}
.card-produs img {
float: right;
width: 120px;
margin-left: 12px;
}
.card-produs .pret {
clear: both;
font-weight: 700;
}
Efect vizual în browser
Chenarul gri înconjoară tot cardul, inclusiv imaginea din dreapta. Prețul („149 lei”) apare pe un rând nou, sub imagine.
Greșeli frecvente
- Construirea coloanelor unei pagini cu float; folosește Flexbox sau Grid, care nu cer clearfix și aliniază vertical fără trucuri.
- Containerul „dispare” (înălțime 0) când toți copiii sunt flotanți; pune
display: flow-rootpe container. floatnu are efect pe copiii unui container flex sau grid; acolo poziția o dau regulile de aliniere.
Comenzi înrudite
display (block, inline, inline-block, none): Stabilește tipul de cutie al elementului în fluxul paginii sau îl ascunde complet din document.display: flex: Transformă elementul într-un container flexibil; toți copiii direcți devin elemente flex așezate automat în linie.display: grid: Transformă elementul într-un container grilă bidimensional, capabil să controleze simultan atât rândurile, cât și coloanele.columns (layout pe mai multe coloane): Împarte textul unui element în mai multe coloane, ca într-un ziar, cu spațiu și linie între ele.