Mājas lapa » Kodēšana » CSS - marginauto; - Kā tas strādā

    CSS - marginauto; - Kā tas strādā

    Lietošana starpība: auto bloka elementa centrēšana horizontāli ir labi zināms paņēmiens. Bet vai esat kādreiz domājuši, kāpēc vai kā tas darbojas? Lai atbildētu uz šo jautājumu, mums vispirms ir jāizpēta, kā starpība: auto darbojas. Arī maisījumā ir tas, ko auto iespējams, veicot rezerves, ja tas darbojas vertikālā centrēšanā, un daži citi jautājumi.

    Bet vispirms, ko dara auto faktiski?

    Definīcija auto mainās elementiem, elementu tipi un kontekstā. Rezervēs, auto var nozīmēt vienu no divām lietām: aizņemiet pieejamo vietu vai 0 px. Šīs divas gribas definēt dažādus elementa izkārtojumus.

    "Auto" Pieejamās telpas uzņemšana

    Tas ir visizplatītākais starpības pielietojums auto mēs bieži sastopamies. Piešķirot auto elementa kreisajā un labajā malā tie vienādi aizņem pieejamo horizontālo telpu elementa traukā - līdz ar to elements kļūst centrēts.

    Tomēr tas darbosies tikai horizontālām robežām (vairāk par. \ T kāpēc vēlāk) un arī nestrādās ar peldētu un inline elementi un pats par sevi nevar strādāt iekšā absolūts un fiksēti novietoti elementi (mēs tomēr redzēsim, kā padarīt šos darbus).

    Faux Float, izmantojot pieejamo telpu

    Kopš tā laika auto gan labajā, gan kreisajā malā vienādi aizņem "pieejamo" telpu, ko, jūsuprāt, notiks tad, kad vērtība būs auto tiek piešķirts tikai vienam no tiem?

    Kreisās vai labās malas ar auto aizņems visu pieejamo vietu, padarot elementu izskatāmu pa labi vai pa kreisi.

    “auto” Aprēķināts līdz 0px

    Kā minēts iepriekš, auto nestrādās peldošos, iekšējos un absolūtos elementos. Visi šie elementi jau ir lēmumu par to izkārtojumu, tāpēc nav jāizmanto auto par peļņas normu un gaida, ka tā kļūs centrēta tieši tāpat.

    Tas uzvarēs sākotnējo mērķi izmantot kaut ko līdzīgu peldēt. Tādējādi auto šajos elementos būs 0px vērtība.

    auto arī nedarbosies ar tipisku bloka elementu, ja tam nav platuma. Visiem līdzšinējiem piemēriem ir platums.

    Vērtības platums auto būs 0px starpības. Bloka elementa platums parasti aptver tā konteineru, kad tas ir auto vai 100% un līdz ar to rezerves auto tiks aprēķināts 0px šādā gadījumā.

    Kas notiek ar vertikālajām robežām ar vērtību auto?

    auto gan augšējā, gan apakšējā malā vienmēr tiek aprēķināts 0px (izņemot absolūtos elementus). W3C spec tā saka:

    “Ja “margin-top” vai “malas-apakšas” ir “auto”, to izmantotā vērtība ir 0 "

    Kāpēc, labi, tas ir līdz šim, noslēpums. Tas varētu būt tipiskas vertikālās lapas plūsmas dēļ lapas lielums palielinās augstumā. Tātad elementa centrēšana vertikāli savā konteinerā nepadara to par centrētu, salīdzinot ar pašu lapu, atšķirībā no tā, ka tas tiek veikts horizontāli (vairumā gadījumu).

    Un varbūt tas ir šī paša iemesla dēļ, un viņi nolēma pievienot izņēmumu attiecībā uz absolūtajiem elementiem, kurus var novietot vertikāli visā lapas augstumā.

    Tas varētu būt arī starpības sabrukuma efekts (blakus esošo elementu sabrukums)” starpība), kas ir vēl viens izņēmums vertikālajām robežām.

    Tomēr pēdējais, šķiet, ir maz ticams gadījums - jo elementi, kas nesalauž to robežas, piemēram, pludiņi un elementi ar pārplūde citāds nekā redzams, joprojām piešķir 0px vertikālās starpības auto.

    Absolūti novietotu elementu centrēšana

    Tā kā notiek izņēmums absolūti novietotiem elementiem, mēs”Izmantojiet auto vērtību vertikāli un horizontāli. Bet pirms tam mums ir jāzina, kad būs starpība: auto faktiski strādā kā mēs vēlamies, lai tas būtu pilnīgi novietots elements.

    Tādā gadījumā tiek ievietots cits W3C spec.

    "Ja visi trīs “pa kreisi”, “platums”, un “pa labi” ir “auto”: Vispirms iestatiet “auto” vērtības “margas pa kreisi” un “labās malas” līdz 0… "

    "Ja neviens no šiem trim nav “auto”: Ja abi “margas pa kreisi” un “labās malas” ir “auto”, atrisināt vienādojumu ar papildu ierobežojumu, ka abas robežas iegūst vienādas vērtības ”

    Tas diezgan daudz saka, ka horizontāli auto starpības izmantot vienādas telpas, vērtības pa kreisi, platums un pa labi nevajadzētu būt auto , to noklusējuma vērtība. Tātad viss, kas mums jādara, ir dot viņiem zināmu vērtību absolūti novietotā elementā. pa kreisi un pa labi vajadzētu vienādas vērtības perfektai centrēšanai.

    Specifikācijā ir minēts arī kaut kas līdzīgs vertikālām malām.

    “Ja visi trīs “tops”, “augstums”, un “apakšā” ir automātiska, iestatīta “tops” statiskā stāvoklī… ”

    “Ja neviens no šiem trim nav “auto”: Ja abi “margin-top” un “malas-apakšas” ir “auto”, atrisināt vienādojumu ar papildu ierobežojumu, ka abas starpības iegūst vienādas vērtības… ”

    Līdz ar to ir absolūti nepieciešams centrēts vertikāli, tā tops, augstums, un apakšā vērtībām nevajadzētu būt auto.

    Tagad, apvienojot visus šos, mēs to darām”Es saņemšu:

    Secinājums

    Ja jūs kādreiz vēlaties izskalot jūsu lapas elementu pa labi vai pa kreisi bez sekojošiem elementiem, kas tos iesaiņo (piemēram, kas notiek ar pludiņu), atcerieties, ka ir iespēja izmantot auto rezervēm.

    Konvertējot elementu absolūtā veidā tā, lai to varētu vertikāli vertikāli, tā nav lieliska ideja. Ir arī citas iespējas, piemēram, flexbox un CSS transformācija, kas ir piemērotāka tiem.