CSS úszók 5 kérdésben
A CSS "Floats" (lebegő elemek) használata egyszerű, de ha egyszer használják, akkor az az azt körülvevő elemekre gyakorolt hatása néha kiszámíthatatlan. Ha valaha is találkoztál a szomszédos elemek eltűnésének problémáival, vagy úszik, hogy olyan fájdalmas hüvelykujj, mint amilyen fájdalmas, ne aggódj többé.
Ez a hozzászólás öt alapkérdést tartalmaz, amelyek segítenek a lebegő elemek szakértőjeként.
- Mely elemek nem lebegnek?
- Mi történik az elemekkel, amikor úszik?
- Mi történik a "Floats" testvéreivel??
- Mi történik a "Float" szülőjével??
- Hogyan törli a "úszók"?
Azoknak az olvasóknak, akik hozzáadják a TL-t az élethez, van egy összefoglaló a hozzászólás végén.
1. Mely elemek nem lebegnek?
egy abszolút vagy rögzített elhelyezett elem nem lebeg. Tehát, ha legközelebb találkozik egy úszóval, amely nem működik, ellenőrizze, hogy van-e benne position: absolute
vagy helyzet: fix
és alkalmazza a változtatásokat.
2. Mi történik az elemekkel, amikor úszik?
Ha egy elemet "float" címkével látunk el, akkor azt balra vagy jobbra futtatja, amíg el nem éri megérinti a tartály elemének falát. Alternatív megoldásként az addig fut megüt egy másik úszó elemet, amely már ugyanazt a falat érte el. Mindaddig egymás mellett halmozódnak fel, amíg a hely elfogy, és újabb bejövő is lesz.
Úszó elemek is nem megy az elemek felett előtt azt a kódban, amit meg kell fontolnia a kódolás előtt a “Úszó” után egy olyan elem, amelynek oldalán azt szeretné lebegni.
Íme még két dolog, ami egy lebegő elemgel történik, attól függően, hogy milyen típusú elem lebegő:
(1) Egy inline elem blokkszintű elemgé alakul amikor lebegtek.
Valaha azon tűnődtem, hogy miért tudsz hirtelen a lebegő magassághoz és szélességhez rendelni arasz
? Ez azért van, mert az összes elem, amikor lebegett, az értéket kapja Blokk
annakért kijelző
tulajdonság (inline-table
kapni fog asztal
) blokk szintű elemek létrehozása.
(2) A meghatározatlan szélességű blokkelem a lebegés során zsugorodik, hogy illeszkedjen a tartalomhoz.
Általában, ha nem ad meg szélességet egy blokkelemhez, a szélessége az alapértelmezett 100%. De amikor lebegtek, ez nem így van; a blokk elem doboza összezsugorodik, amíg a tartalom nem lesz látható.
3. Mi történik a "Floats" testvéreivel??
Amikor úgy döntesz, hogy egy elem elemeit lebegteted, ne aggódj, hogyan fog viselkedni, viselkedése kiszámítható lesz, vagy balra vagy jobbra mozog. Amit tényleg gondolnod kell hogyan viselkednek a testvérek.
Az "úszók" a leginkább gondoskodó és engedelmes későbbi testvérek az egész világon. Mindent megtesznek a lebegő elem elhelyezésére.
A szöveges és inline elemek egyszerűen hajtsa végre a "Floats" -ot, és körülveszi a "Float" -ot amikor a helyzetben van.
A blokkelemek egy lépéssel tovább fog menni tekerje magát egy "Float" körül nagylelkűen, még akkor is, ha a saját gyermekelemeket eldobja, hogy helyet biztosítson a „Float” számára..
Nézzük meg ezt egy kísérletben. Az alábbiakban egy kék doboz látható, és utána egy piros méretű doboz van, amely azonos méretű néhány gyermekelemmel.
Most lebegjünk a kék dobozban, és nézzük meg, mi történik a piros doboz és a gyermekei között.
Minden rendben lesz, ha a piros doboz megáll a kék mezőbe, és ehhez használható overflow: hidden
.
Ha hozzáadja overflow: hidden
egy elemre, amely egy úszót csomagol, nem fog megtenni. Lásd alább, hogyan viselkedik a piros doboz overflow: hidden
.
4. Mi történik a "Float" szülőjével??
A szülők nem törődnek sokan a „Float” gyermekeikkel, kivéve, hogy nem szabadulnak ki a bal vagy jobb határukból.
Jellemzően a meg nem határozott magasságú blokkelem növeli a magasságát a gyermekelemek elhelyezéséhez, de ez nem így van a "Float" gyerekek esetében.. Ha a "Float" mérete növekszik, a szülő nem növeli ennek magasságát. Ez ismét megoldható overflow: hidden
a szülőben.
5. Hogyan kell törölni az „úszókat”?
Már említettem overflow: hidden
hogy a szülő magassága egy úszó gyermek elhelyezésére szolgáljon, miközben a "Float" után a többi elem számára megfelelő helyet teremt, és megállítja a testvéreket a csomagolástól..
És ez az, hogy egy elemet egy "Float" -hoz közelítsen, kompromisszumok nélkül.
Van egy másik módszer, ahol az elemek nem lesznek bárhol a "Float" testvéreik közelében. A egyértelmű
attribútum, amely egy elemet mentesíthet a "Float" közelében.
tiszta: balra; világos: jobb; világos: mindkettő;
balra
Az érték az elem bal oldalán lévő összes "úszást" törli, és fordítva jobb
, és mindkét oldalon mindkét
. Ez egyértelmű
attribútum használható testvér, üres div vagy pszeudo elem, mint egy kényelmes.
összefoglalás
- Az abszolút / fix elemek nem lebegnek.
- A "Float" nem megy az elem felett előtt a kódban.
- Ha nincs elegendő hely a tartályban, egy "úszó" lesz nyomva.
- Minden "úszó" blokkszintű elemet alkot.
- Ha a szélesség nem szerepel a "Float" -on, akkor a tartalom összege illeszkedik.
- A "Float" későbbi testvérei körülvesznek (inline & text), vagy becsomagolják őket (blokkok).
- Egy elem „lebeg” csomagolásának megállításához használjon
overflow: hidden
. - A "Float" szülők nem növelnék magasságát, hogy illeszkedjen az úszóhoz.
- Ahhoz, hogy a szülő növelje a magasságot a "Float" -nál, használja
overflow: hidden
(vagy hozzon létre egy üres testvértegyértelmű
utána) - Annak megakadályozása érdekében, hogy egy elem "Float" közelében legyen, használja a
egyértelmű
tulajdonság.