margin
Lastnost določa skrajni del modela polje, ki ustvarja prostor okrog elementa, zunaj vseh opredeljenih meja.
Robovi so nastavljeni z uporabo dolžin, odstotkov ali ključne besede auto
in imajo lahko negativne vrednosti. Tu je primer:
.box ( margin: 0 3em 0 3em; )
margin
je stenografska lastnost in sprejema do štiri vrednosti, prikazane tukaj:
.box ( margin: || || || )
Če je nastavljenih manj kot štiri vrednosti, se domnevajo, da manjkajoče vrednosti temeljijo na opredeljenih. Na primer, naslednja dva nabora pravil bi dobila enake rezultate:
.box ( margin: 0 1.5em; ) .box ( margin: 0 1.5em 0 1.5em; )
Če je torej definirana samo ena vrednost, to nastavi vse štiri robove na isto vrednost. Če so navedene tri vrednosti, je margin: (top) (left-and-right) (bottom);
.
Vsakega posameznega roba je mogoče prijaviti z uporabo dolgoročnega zapisa, v tem primeru bi na lastnost določili le eno vrednost:
.box ( margin-top: 20px; margin-right: 10px; margin-bottom: 20px; margin-left: 10px; )
auto
in centriranje
Vsaka lastnost roba lahko sprejme tudi vrednost auto
. Vrednost v auto
bistvu brskalniku pove, da za vas določi maržo. V večini primerov bo vrednost auto
enakovredna vrednosti 0
(ki je začetna vrednost za vsako lastnost roba) ali sicer, kar koli prostora je na voljo na tej strani elementa. Vendar auto
je priročen za vodoravno centriranje:
.container ( width: 980px; margin: 0 auto; )
V tem primeru je treba narediti dve stvari za centriranje tega elementa vodoravno znotraj razpoložljivega prostora:
- Element dobi določeno širino
- Levi in desni rob sta nastavljena na
auto
Brez določene širine auto
vrednosti v bistvu ne bi imele nobenega učinka, tako da bi levi in desni rob postavili na 0
ali pa na kakršen koli razpoložljiv prostor v nadrejenem elementu.
Prav tako je treba poudariti, da auto
je koristno samo za vodoravno centriranje, zato uporaba auto
za zgornji in spodnji rob ne bo usmerila elementa navpično, kar je za začetnike lahko zmedeno.
Strnjeni robovi
Navpični robovi na različnih elementih, ki se med seboj dotikajo (torej nimajo vsebine, oblazinjenja ali meja, ki jih ločujejo), se bodo zlomili in tvorili en sam rob, ki je enak večjemu od sosednjih robov. To se ne zgodi na vodoravnih robovih (levo in desno), temveč le navpično (zgoraj in spodaj).
Za ponazoritev vzemite naslednji HTML:
Collapsing Margins
Example text.
In naslednji CSS:
h2 ( margin: 0 0 20px 0; ) p ( margin: 10px 0 0 0; )
V tem primeru ima h2
element spodnji rob 20px. Element odstavka, ki mu takoj sledi v viru, ima zgornji rob, nastavljen na 10 slikovnih pik.
Zdi se, da h2
zdrava pamet kaže, da bi bila debelina navpičnega roba med odstavkom skupaj 30px (20px + 10px). Toda zaradi propada meje je dejanska debelina 20 px. To je prikazano v vdelanem peresniku spodaj:
Oglejte si to pisalo!
Čeprav se zrušeni robovi na prvi pogled zdijo neintuitivni, so dejansko koristni iz nekaj razlogov. Prvič, praznim elementom preprečujejo dodajanje dodatnega, običajno nezaželenega, navpičnega prostora robov.
Drugič, omogočajo bolj dosleden pristop k razglasitvi univerzalnih robov med elementi strani. Na primer, naslovi imajo običajno prostor z navpičnimi robovi, prav tako tudi odstavki. Če se robovi ne bi strnili, bi naslovi, ki sledijo odstavkom (ali obratno), pogosto zahtevali ponastavitev robov na enem od elementov, da bi dosegli dosledno velikost navpičnega razmika.
Tretjič, strnitev roba velja tudi za ugnezdene elemente. Poglejte naslednji peresnik:
Oglejte si to pisalo!
Tu ima element odstavka zgornji rob, nastavljen na 30 slikovnih pik, in je ugnezden znotraj div
elementa z zgornjim robom 40 slikovnih pik. Poleg tega ima h2
element spodnji rob 20 slikovnih pik.
Ponovno zdrava pamet predlaga, da bi bil celotni prostor navpičnega roba tukaj 90px (20px + 40px + 30px), vendar se namesto tega robovi strnejo v en rob 40px (najvišji od treh). To je v večini primerov koristno, ker ni treba ponovno definirati nobenega zgornjega roba, da odstranite odvečni navpični prostor.
Negativne marže
Kot lahko sumite, medtem ko pozitivna vrednost roba odriva druge elemente, bo negativni rob element sam potegnil v to smer ali pa druge elemente proti njemu.
Tu je primer vsebnika z oblazinjenjem in glava h2 ima negativne robove, ki se skozi to oblazinjenje potegnejo nazaj na robove:
Glejte primer
najpogostejše uporabe pisala za negativne robove Chrisa Coyierja (@chriscoyier)
na CodePen.
Tu je primer, ko ima prvi odstavek negativni spodnji rob, zaradi česar se naslednji odstavek potegne navzgor.
Glejte
spodnji odstavek negativnega roba pisala Chrisa Coyierja (@chriscoyier)
na CodePenu.
Podpora za brskalnik
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
Deluje | Deluje | Deluje | Deluje | Deluje | Deluje | Deluje |
IE6 je nagnjen k podvojeni napaki s plavajočim robom, ki jo je v večini primerov mogoče odpraviti z dodajanjem display: inline
plavajočega elementa.