Koduleht » Kodeerimine » CSS - marginauto; - Kuidas see töötab

    CSS - marginauto; - Kuidas see töötab

    Kasutamine marginaal: automaatne ploki elemendi horisontaalseks tsentreerimiseks on hästi tuntud meetod. Aga kas te olete kunagi mõelnud, miks või kuidas see toimib? Sellele vastamiseks peame kõigepealt vaatama, kuidas marginaal: auto töötab. Ka segus on see, mida automaatne kui see toimib vertikaalse tsentreerimise ja mõne muu probleemi korral, võib seda teha marginaalides.

    Aga esmalt, mis teeb automaatne tegelikult seda teha?

    Määratlus automaatne varieerub elemente, elemendi tüübid ja Sisu. Marginaalides, automaatne võib tähendada ühte kahest: võtta kasutatav ruum või 0 px. Need kaks tahet määratleda elemendi erinevad paigutused.

    "Automaatne" Olemasoleva ruumi vastuvõtmine

    See on kõige tavalisem marginaali kasutamine automaatne me kohtume tihti. Määrates automaatne elemendi vasakule ja paremale servale võtavad nad elementi konteineris oleva horisontaalse ruumi võrdselt - ja seega muutub element keskele.

    Kuid see toimib ainult horisontaalsete marginaalide puhul (rohkem miks hiljem) ja ka ei tööta ujutatud ja inline elemendid ja iseenesest ka see ei saa töötada sisse absoluutne ja fikseeritud paigutatud elemendid (me näeme siiski, kuidas neid tööd teha).

    Faux Float Võttes kasutatava ruumi

    Alates sellest ajast automaatne nii parempoolses kui ka vasakpoolses servas asuvad võrdselt „kättesaadavad“ ruumid, mida te arvate, kui see väärtus on automaatne antakse ainult ühele neist?

    Vasak või parem varu koos automaatne võtab kasutusele kõik "kättesaadavad" ruumid, mis muudavad elemendi välimuseks paremale või vasakule.

    “automaatne” Arvutatud 0px

    Nagu varem mainitud, automaatne ei tööta ujutatud, inline- ja absoluutsetes elementides. Kõik need elemendid on juba olemas otsustas nende paigutuse, seega ei ole kasutamisel mingit kasu automaatne marginaalide jaoks ja ootab, et see keskenduks just niimoodi.

    See lüüa algse eesmärgi kasutada midagi sellist ujuda. Seega automaatne nende elementide väärtus on 0px.

    automaatne ei tööta ka tüüpilise ploki elemendi puhul, kui sellel ei ole laiust. Kõigil näidetel, mida ma siia näidasin, on laiused.

    Väärtuse laius automaatne on 0px marginaalid. Blokielemendi laius katab tavaliselt selle konteineri automaatne või 100% ja seega marginaali automaatne arvutatakse 0px sellisel juhul.

    Mis juhtub väärtusega vertikaalsete marginaalidega automaatne?

    automaatne nii ülemisel kui ka alumisel serval arvutatakse alati 0px (välja arvatud absoluutsed elemendid). W3C spetsifikatsioon ütleb, et see on selline:

    “Kui “margin-top” või “marginaali põhja” on “automaatne”, nende kasutatud väärtus on 0 "

    Miks, nii et see on siiani, müsteerium. See võib olla tingitud tüüpilisest vertikaalsest leheküljevoolust, kus lehekülje suurus suurendab kõrgust. Niisiis ei tee elementi tsentreerimine konteineris vertikaalselt selle lehe keskele, erinevalt sellest, kui see on tehtud horisontaalselt (enamikul juhtudel).

    Ja võib-olla sellepärast otsustasid nad sama põhjuse tõttu lisada erandi absoluutsetele elementidele, mida saab kogu lehekülje kõrgusele vertikaalselt keskele seada.

    See võib olla ka marginaali kokkuvarisemise efekti tõttu (külgnevate elementide kokkuvarisemine)” marginaalid), mis on veel üks erand vertikaalsete marginaalide puhul.

    Viimane näib siiski olevat ebatõenäoline - kuna elemendid, mis ei lõika oma marginaale, nagu ujukid ja elemendid koos ülevool muud kui nähtav, omistage veel automaatne.

    Absoluutselt paigutatud elementide tsentreerimine

    Kuna on täiesti erandlike elementide erand, siis me”Kasutan automaatne väärtust keskele vertikaalselt ja horisontaalselt. Aga enne seda peame leidma, millal marginaal: automaatne tegelikult töötame nagu me tahame, et see oleks täiesti paigutatud elemendis.

    Siin asub teine ​​W3C-spetsifikatsioon:

    "Kui kõik kolm “vasakule”, “laius”, ja “õigus” on “automaatne”: Kõigepealt seadistage “automaatne” väärtused “marginaal vasakule” ja “marginaali paremale” kuni 0… "

    "Kui ükski neist kolmest ei ole “automaatne”: Kui mõlemad “marginaal vasakule” ja “marginaali paremale” on “automaatne”, lahendada võrrand lisapiiranguga, mida kaks marginaali saavad võrdsed väärtused "

    See ütleb päris palju horisontaalne automaatne marginaalid haarata võrdseid ruume väärtused vasakule, laius ja õigus ei tohiks olla automaatne , nende vaikeväärtus. Nii et me peame andma neile mingit väärtust absoluutselt paigutatud elemendis. vasakule ja õigus oleks pidanud võrdsed väärtused ideaalse tsentreerimise jaoks.

    Spetsifikatsioonis mainitakse ka midagi vertikaalsete marginaalide sarnast.

    “Kui kõik kolm “top”, “kõrgus”, ja “põhja” on automaatne, seatud “top” staatilisse asendisse… ”

    “Kui ükski neist kolmest ei ole “automaatne”: Kui mõlemad “margin-top” ja “marginaali põhja” on “automaatne”, lahendada võrrand lisapiiranguga, mida kaks marginaali saavad võrdsed väärtused… ”

    Seega, et olla absoluutne element vertikaalselt, tema top, kõrgus, ja põhja väärtused ei tohiks olla automaatne.

    Nüüd, ühendades kõik need, on see see, mida me”Saad:

    Järeldus

    Kui te tahate kunagi oma lehel elementi paremale või vasakule loputada, ilma et see sisaldaks järgnevaid elemente (nagu ujuvad), pidage meeles, et on võimalik kasutada automaatne marginaalide puhul.

    Elemendi muutmine absoluutseks, nii et see saab vertikaalselt keskele asetada, ei pruugi olla suurepärane idee. Seal on ka teisi võimalusi, nagu flexbox ja CSS transformatsioon, mis on neile sobivamad.