Homepage » Coding » CSS - marginauto; - Hogyan működik

    CSS - marginauto; - Hogyan működik

    használata margin: auto a blokkelemet vízszintesen középpontba állítani egy jól ismert technika. De vajon valaha is azon tűnődtél, hogy miért vagy hogyan működik? Ennek megválaszolásához először meg kell vizsgálnunk, hogy a margó: az automatikus. A mixben is van mit kocsi esetleg margókban is végezhet, ha függőleges középpontosításra és néhány egyéb problémára működik.

    De először, mit csinál kocsi valójában?

    A kocsi változik elemek, elemtípusok és kontextus. Margókban, kocsi a két dolog egyikét jelenti: vegye fel a rendelkezésre álló helyet vagy 0 px-t. Ez a két akarat definiáljon különböző elrendezéseket egy elemhez.

    "auto" Elérhető tér felvétele

    Ez a leggyakoribb haszonkulcs kocsi gyakran találkozunk. A hozzárendeléssel kocsi egy elem bal és jobb margójába egyenlően veszi fel az elemtartályban lévő rendelkezésre álló vízszintes helyet - és így az elem középre kerül.

    Ez azonban csak vízszintes margóknál fog működni (többet a miért később), és ez is nem fog lebegni és inline elemek és önmagában is nem működik ban ben abszolút és rögzített elhelyezett elemek (azonban látni fogjuk, hogyan lehet ezeket a munkákat elvégezni).

    Faux Float a rendelkezésre álló tér felvételével

    Mivel kocsi mind a jobb, mind a bal oldali margóknál egyformán felveszi a "rendelkezésre álló" helyet, mit gondol, mi történik akkor, ha az érték kocsi csak az egyiknek adják?

    Bal vagy jobb margó kocsi az összes "rendelkezésre álló" helyet foglalja el, így az elem úgy néz ki, mint amennyit jobbra vagy balra öblített.

    “kocsi” 0px-re számítva

    Mint korábban említettük, kocsi nem fog lebegő, inline és abszolút elemekben működni. Mindezen elemek már rendelkeznek az elrendezésükről döntött, így nincs használatuk kocsi a margókért és arra számítva, hogy éppúgy középpontba kerül.

    Ez legyőzi az eredeti célt, hogy valami hasonlót használjon úszó. Ennélfogva kocsi az elemekben 0px értékű lesz.

    kocsi akkor sem fog működni egy tipikus blokkelemen, ha nincs szélessége. Az összes példa, amit eddig megmutattam, szélessége van.

    Az érték szélessége kocsi lesz 0px margók. A blokkelem szélessége tipikusan a tartályt fedi le kocsi vagy 100% és így egy margin kocsi számításra kerül 0px ilyen esetben.

    Mi történik az értékkel rendelkező függőleges margókkal? kocsi?

    kocsi mind a felső, mind az alsó margóban mindig 0px-re számítanak (kivéve az abszolút elemeket). A W3C spec ezt mondja:

    “Ha “margin-top” vagy “margin-bottom” jelentése “kocsi”, a használt értéke 0 "

    Miért, nos, ez eddig is, rejtély. Ez lehet a tipikus függőleges oldaláramlás miatt, ahol az oldalméret növeli a magasságot. Tehát az elem függőleges elhelyezése a tartályban nem teszi azt középre, az oldalhoz viszonyítva, ellentétben azzal, ha vízszintesen történik (a legtöbb esetben).

    Talán ugyanezen ok miatt is úgy döntöttek, hogy kivételt adnak az abszolút elemekhez, amelyek függőlegesen középre helyezhetők az egész oldal magassága mentén.

    Az is lehet, hogy a margó összeomlási hatása miatt (a szomszédos elemek összeomlása)” a függőleges margók kivételével.

    Az utóbbi azonban valószínűtlen esetnek tűnik - mivel olyan elemeket, amelyek nem összezárják a margójukat - mint pl. túlcsordulás más mint látható, még 0px függőleges margókat rendeljen hozzá kocsi.

    Abszolút pozicionált elemek központosítása

    Mivel előfordul, hogy kivétel van a teljesen elhelyezett elemekről, mi”Használhatom kocsi függőleges és vízszintes középpontba kerül. De ezt megelőzően meg kell találnunk, hogy mikor lesz margin: auto valójában úgy működik, mint egy teljesen elhelyezett elemben.

    Ez az a hely, ahol egy másik W3C-specifikáció érkezik:

    "Ha mind a három “balra”, “szélesség”, és “jobb” vannak “kocsi”: Először állítsa be “kocsi” értékek “margin-left” és “margin-right” 0-ig… "

    "Ha a három közül egyik sem “kocsi”: Ha mindkettő “margin-left” és “margin-right” vannak “kocsi”, megoldja az egyenletet azon extra kényszerben, amelyet a két margó egyenlő értékre tesz

    Ez nagyjából ezt mondja vízszintes kocsi margók megragadni az egyenlő tereket, a értékek balra, szélesség és jobb nem kellene kocsi , alapértelmezett értékük. Tehát mindössze annyit kell tennünk, hogy valamilyen értéket adjon nekik egy teljesen elhelyezett elemben. balra és jobb kellett volna egyenlő értékek a tökéletes központosításhoz.

    A specifikáció a vertikális margókhoz hasonló dolgokat is említ.

    “Ha mind a három “felső”, “magasság”, és “alsó” automatikus, beállított “felső” a statikus helyzetbe… ”

    “Ha a három közül egyik sem “kocsi”: Ha mindkettő “margin-top” és “margin-bottom” vannak “kocsi”, megoldja az egyenletet azon extra kényszerben, hogy a két margó egyenlő értéket kapjon… ”

    Ezért abszolút elemnek kell lennie függőlegesen, annak felső, magasság, és alsó értékek nem lehetnek kocsi.

    Most mindezeket egyesítve ez az, amit mi”Kapok:

    Következtetés

    Ha valaha is szeretné az oldal elemeit jobbra vagy balra öblíteni anélkül, hogy a következő elemeket csomagolná (mint például az úszóval történik), ne feledje, hogy van lehetőség arra kocsi margók esetében.

    Az elem átalakítása abszolút csak úgy, hogy függőlegesen központosítható legyen, nem lehet jó ötlet. Vannak más lehetőségek, mint például a flexbox és a CSS átalakítás, amelyek jobban megfelelnek ezeknek.