float
Vara CSS kasutatakse asukoha ja paigutuse veebilehti.
.module ( float: left; )
Väärtused
none
: element ei hõlju. See on algväärtus.left
: hõljub elemendi mahutist vasakul.right
: hõljub elementi mahutist paremal.inherit
: element pärib oma vanema ujuki suuna.
display: block;
Mida tähendab hõljumine?
Eesmärgi ja päritolu mõistmiseks float
võime kujunduse printida. Prindipaigutuses võidakse pildid lehele sättida nii, et tekst ümbritseb neid vastavalt vajadusele. Seda nimetatakse tavaliselt ja asjakohaselt tekstimähiseks. Siin on näide sellest.


Lehekülgede paigutusprogrammides saab teksti hoidvatele kastidele öelda, et need austaksid teksti või ümbritseks seda. Tekstimähise ignoreerimine võimaldab sõnadel voolata otse pildi kohal, nagu seda poleks isegi olnud. See on vahe, kas see pilt on osa lehe voost (või mitte). Veebikujundus on väga sarnane.


Veebikujunduses on leheelemendid, millele on float
rakendatud CSS-i omadus, täpselt nagu pildid prindipaigutuses, kus tekst nende ümber voolab. Ujuvad elemendid jäävad osaks veebilehe voos. See erineb absoluutset positsioneerimist kasutavatest leheelementidest. Absoluutselt paigutatud lehe elemendid eemaldatakse veebilehe voost, näiteks siis, kui prindipaigutuse tekstikastil kästi lehe mähkimist eirata. Absoluutselt paigutatud leheelemendid ei mõjuta teiste elementide positsiooni ja muud elemendid ei mõjuta neid, olenemata sellest, kas need puudutavad üksteist või mitte.
Demo
See demo näitab artiklit, millel on kaks pilti: üks on seatud olekusse float: left
ja teine on seatud float: right
. Ujukite väljalülitamiseks ja sisselülitamiseks vajutage nuppu “ujukite vahetamine”.
Vaadake CodePenil CSS-Tricksi (@ css-tricks) pliiatsi hõljuki näidet.
Ujukid paigutuse jaoks
Peale lihtsa näite teksti ümbritsemisest piltide ümber saab ujukeid kasutada tervete veebipaigutuste loomiseks .


Ujukid on abiks ka väiksematel juhtudel paigutamisel. Võtame näiteks selle väikese lehe ala. Kui kasutame float
oma avatari pilti, siis selle pildi suuruse muutmisel muutub kasti tekst selle mahutamiseks:


Sama paigutuse saab saavutada, kasutades suhtelist positsioneerimist konteineril ja absoluutset positsioneerimist ka avataris. Kuid kui see on nii tehtud, ei mõjutaks avatar teksti ja see ei suudaks suuruse muutust kajastada.


Demo
See demo näitab rakendusega float: left
rakendatud avatari . Avatari pildi laiema versiooni nägemiseks vajutage nuppu „Pildi suuruse vahetamine“. Pange tähele, et tekst peegeldub pildi mahutamiseks, selle asemel, et pilti üle joosta.
Vaadake CodePenil CSS-Tricksi (@ css-tricks) pliiatsi hõljumise demot.
Ujuki puhastamine
Floati õe vara on clear
. Element, millel on määratud clear
omadus, ei liigu ujuki kõrval nagu ujuk soovib, vaid liigub ise ujukist mööda. Jällegi on illustratsioonist rohkem abi kui sõnadest:


Ülaltoodud näites hõljub külgriba paremale ja on lühem kui peamine sisupiirkond. Seejärel peab jalus hüppama üles vabasse ruumi, nagu ujuk nõuab. Selle probleemi lahendamiseks saab jaluse kustutada, et see jääks mõlema hõljuva veeru alla.
#footer ( clear: both; )


Selgel on ka neli kehtivat väärtust. both
Kõige sagedamini kasutatakse väärtust , mis puhastab mõlemast suunast tulevad ujukid. Väärtusi left
ja right
saab kasutada ujuki puhastamiseks ainult ühest suunast. Esialgne väärtus on none
, mis on tavaliselt tarbetu, välja arvatud juhul, kui seda kasutatakse määratud clear
väärtuse selgesõnaliseks eemaldamiseks . Väärtus inherit
paneb elemendi oma vanema clear
väärtuse pärima . Kummalisel kombel ei toetanud Internet Explorer seda väärtust enne IE8.
Ainult ujuki left
või right
ujuki puhastamine on looduses vähem levinud, kuid sellel on kindlasti kasutusalad.


Suur kokkuvarisemine
Üks uimastavatest asjadest ujukitega töötamise juures on see, kuidas need võivad mõjutada neid sisaldavat elementi (nende "vanem" elementi). Kui vanemelement sisaldab ainult ujuvaid elemente, variseb selle kõrgus tühjaks. See pole alati ilmne, kui vanem ei sisalda visuaalselt märgatavat tausta, kuid on oluline sellest teadlik olla.


Nii varjukindel kui kokkuvarisemine võib tunduda, on alternatiiv hullem. Mõelge sellele stsenaariumile:


Kui peal olev plokielement oleks hõlpsasti laienenud hõljuva elemendi mahutamiseks, oleks meil lõikudevahelises tekstivoogus ebaloomulik tühimurd, ilma et oleks praktilist võimalust seda parandada. Kui see nii oleks, kurdaksime meie, disainerid, selle käitumise üle palju tugevamalt kui kokkuvarisemise üle.
Kummalise paigutuse ja brauseriteüleste probleemide vältimiseks tuleb peaaegu alati tegeleda varinguga. Fikseerime selle, puhastades ujuki pärast mahutis asuvaid ujuvaid elemente, kuid enne konteineri sulgemist.
Ujukite puhastamise tehnikad
Kui olete olukorras, kus teate alati, mis saab edukaks elemendiks, saate clear: both;
sellele elemendile väärtust rakendada ja oma asju ajada. See on ideaalne, kuna see ei nõua uhkeid häkkeid ega täiendavaid elemente, mis muudaksid selle täiesti semantiliseks. Muidugi asjad tavaliselt nii ei toimi ja meil peab olema tööriistakastis rohkem ujukitega puhastamise tööriistu.
- Tühja div meetod on sõna otseses mõttes tühi div.
elementi või mõnda muud juhuslikku elementi, kuid div on kõige tavalisem, kuna sellel pole brauseri vaikestiili, sellel ei ole erifunktsiooni ja tõenäoliselt pole see üldjuhul CSS-iga kujundatud. Seda meetodit pilkavad semantilised puristid, kuna sellel pole lehele kontekstuaalset tähendust ja see on mõeldud ainult esitamiseks. Muidugi, kõige kitsamas mõttes on neil õigus. Kuid see saab töö tehtud ja ei tee kellelegi haiget. - Ülevoolumeetod põhineb
overflow
CSS-i atribuudi seadistamisel vanemelemendil. Kui selle atribuudi väärtuseks on seatud vanemelementauto
või sellehidden
peal, laiendab vanem ujukeid, puhastades selle järgmiste elementide jaoks. See meetod võib olla kaunilt semantiline, kuna see ei pruugi vajada täiendavaid elemente. Kui aga avastate, et lisatediv
lihtsalt selle rakendamiseks uue , on see sama eba-semantiline kui tühidiv
meetod ja vähem kohanemisvõimeline. Samuti pidage meeles, et ülevoolu vara pole mõeldud spetsiaalselt ujukite puhastamiseks. Ärge varjake sisu ega käivitage soovimatuid kerimisribasid. - Lihtne kustutusmeetod (muidu tuntud kui “clearfix”) kasutab
:after
ujukite puhastamiseks nutikat CSS-i pseudovalijat ( ). Selle asemel, et lapsevanemale ülevoolu seada, rakendate sellele lisaklassi, näiteks “clearfix”. Seejärel rakendage see CSS:.clearfix:after ( content: ""; visibility: hidden; display: block; height: 0; clear: both; )
See rakendab pärast ujuki kustutavat vanemelementi väikest sisu, mis on vaate eest varjatud. See pole päris kogu lugu, kuna vanemate brauserite jaoks tuleb majutamiseks kasutada lisakoodi. Märkus. Vaadake ka seda koodilõiku, mis jälgib uusimaid ja paremaid selgitusi, sealhulgas uuemat „micro clearfixi”.
Erinevad stsenaariumid nõuavad erinevaid ujukklaasimismeetodeid. Võtame näiteks erinevat tüüpi plokkide ruudustiku.


Sarnaste plokkide paremaks visuaalseks ühendamiseks soovime alustada uut rida vastavalt soovile, antud juhul värvi muutumisel. Võiksime kasutada kas ülevoolu või lihtsat puhastamismeetodit, kui igal värvirühmal oleks vanemelement. Või kasutame tühja div-meetodit iga rühma vahel. Kolm pakkimisdivi, mida varem ei olnud, või kolm pärast, mida varem polnud. Ma lasen teil otsustada, kumb on parem.


Ujukitega seotud probleemid
Ujukid saavad sageli habras oleku tõttu peksa. Suurem osa sellest nõrkusest tulid IE6 ja IE7 vigadest. Kui need brauserid minevikku tuhmuvad, hääbuvad need vead koos nendega. Kuid ikkagi tasub neist aru saada, kui teil on kunagi vaja OldIE-d siluda.
- Allakäik on sümptom ujuva elemendi sees olevast elemendist, mis on ujukist endast laiem (tavaliselt pilt). Enamik brausereid renderdab pilti väljaspool ujukit, kuid mitte see, et kleepuv osa muud kujundust mõjutaks. IE vanad versioonid laiendasid ujukit, et see sisaldaks pilti, mõjutades sageli drastiliselt paigutust. Levinud näide on põhisisu seest välja kleepuv pilt lükates külgriba allapoole.
Kiirparandus: veenduge, et teil poleks ühtegi pilti, mis seda teeks. Kasutage
overflow: hidden;
liigse osa lõikamiseks. - Topeltmarginaali viga - IE 6-ga tegelemisel tuleb veel meeles pidada, et kui rakendate varu ujukiga samas suunas, kahekordistab see varu. Kiirparandus: seadke
display: inline
ujukile ja ärge muretsege, et see jääb plokitaseme elemendiks. - 3PX Jog on, kui teksti, mis on üles kõrval paisati element on müstiliselt visati ära 3PX nagu imelik jõuvälja ümber sularahaga. Kiirparandus: määrake mõjutatud tekstile laius või kõrgus.
- IE 7-s oli Bottom Margin Bug see, et kui ujuv vanem on selles lapsi hõljunud, ignoreerib vanem nende laste alumist varu. Kiire lahendus: selle asemel kasutatakse vanemal alumist polsterdust.
Alternatiivid
Kui vajate piltide ümber teksti mähkimist, pole ujukil tegelikult alternatiive. Sellest rääkides vaadake seda üsna nutikat tehnikat teksti mähkimiseks ebakorrapäraste kujundite ümber. Kuid lehe paigutuse osas on kindlasti valikuid. Eric Solil on artikkel A List Apart, Faux Absolute Positioning, mis kirjeldab väga huvitavat tehnikat, mis ühendab mitmes mõttes ujukite paindlikkuse absoluutse positsioneerimise tugevusega.
CSS3 tegeleb lehe paigutusega mitmel viisil:
- Flexbox
- Mitme veeruga paigutus
- Võrgu paigutus
Arutati absoluutselt positsioneeritud ujukeid (nt positsioneerite absoluutselt tavalisena, kuid element suudab siiski mõjutada teisi elemente, näiteks laske sellel teksti ümbritseda), kuid ma arvan, et idee oli riiulil sarnasuste tõttu teiste tugevamate paigutusideedega.
Video
Tegin mõnda aega tagasi ekraanikuva, selgitades paljusid neist hõljukimõistetest.
Seotud
clear
position
Rohkem informatsiooni
float
W3C spetsifikatsioonisfloat
juures MDN
Brauseri tugi
Chrome | Safari | Firefox | Ooper | IE | Android | iOS |
---|---|---|---|---|---|---|
Kõik | Kõik | Kõik | Kõik | Kõik | Kõik | Kõik |