Centriranje stvari jedan je od najtežih aspekata CSS-a.
Same metode obično nije teško razumjeti. Umjesto toga, to je više zbog činjenice da postoji toliko mnogo načina za centriranje stvari.
Način koji upotrebljavate može se razlikovati ovisno o HTML elementu koji želite centrirati ili o tome hoćete li ga centrirati vodoravno ili okomito.
U ovom ćemo uputstvu razmotriti kako centrirati različite elemente vodoravno, okomito i okomito i vodoravno.
Kako vodoravno centrirati
Centriranje elemenata vodoravno je obično lakše od vertikalnog centriranja. Evo nekoliko uobičajenih elemenata koje biste htjeli centrirati vodoravno i različitih načina za to.
Kako centrirati tekst pomoću CSS svojstva središnjeg poravnanja teksta
Za horizontalno centriranje teksta ili veza jednostavno upotrijebite text-align
svojstvo s vrijednošću center
:
Hello, (centered) World!
p { text-align: center; }


Kako centrirati Div pomoću CSS Margin Auto
Koristite skraćeno margin
svojstvo s vrijednošću 0 auto
za centriranje elemenata na razini bloka poput div
vodoravno:
.child { ... margin: 0 auto; }

Kako vodoravno centrirati div s Flexboxom
Flexbox je najmoderniji način centriranja stvari na stranici i čini dizajniranje responzivnih izgleda mnogo jednostavnijim nego što je to bilo nekada. Međutim, nije u potpunosti podržan u nekim naslijeđenim preglednicima kao što je Internet Explorer.
Da biste element centrirali vodoravno s Flexboxom, samo primijenite display: flex
i justify-content: center
na nadređeni element:
.container { ... display: flex; justify-content: center; }

Kako se centrira okomito
Centriranje elemenata okomito bez modernih metoda poput Flexboxa može biti pravi posao. Ovdje ćemo razmotriti neke starije metode za prvo centriranje stvari, a zatim ćemo vam pokazati kako to učiniti s Flexboxom.
Kako centrirati div vertikalno s CSS apsolutnim pozicioniranjem i negativnim marginama
Dugo je ovo bio način da se stvari centriraju okomito. Za ovu metodu morate znati visinu elementa koji želite centrirati.
Prvo postavite display
svojstvo nadređenog elementa na relative
.
Zatim za podređeni element postavite display
svojstvo na absolute
i top
na 50%
:
.container { ... position: relative; } .child { width: 50px; height: 50px; background-color: red; /* Center vertically */ position: absolute; top: 50%; }

Ali to zapravo samo okomito centrira gornji rub podređenog elementa.
Da biste doista centrirali podređeni element, postavite margin-top
svojstvo na -(half the child element's height)
:
.container { ... position: relative; } .child { width: 50px; height: 50px; background-color: red; /* Center vertically */ position: absolute; top: 50%; margin-top: -25px; /* half this element's height */ }

Kako vertikalno centrirati Div pomoću Transform and Translate
Ako ne znate visinu elementa koji želite centrirati (ili čak i ako znate), ova je metoda izvrstan trik.
Ova je metoda vrlo slična gornjoj metodi negativnih marži. Postavite display
svojstvo nadređenog elementa na relative
.
Za podređeni element postavite display
svojstvo na absolute
i postavite top
na 50%
. Sada, umjesto da koristite negativnu marginu za istinsko centriranje podređenog elementa, samo upotrijebite transform: translate(0, -50%)
:
.container { ... position: relative; } .child { ... position: absolute; top: 50%; transform: translate(0, -50%); }

Imajte na umu da translate(0, -50%)
je to skraćenica za translateX(0)
i translateY(-50%)
. Možete i pisati transform: translateY(-50%)
da usredsredite podređeni element.
Kako usredotočiti div vertikalno pomoću Flexboxa
Poput centriranja stvari vodoravno, Flexbox olakšava centriranje stvari okomito.
Da biste element usredsredili okomito, primijenite display: flex
i align-items: center
na nadređeni element:
.container { ... display: flex; align-items: center; }

Kako centrirati i okomito i vodoravno
Kako centrirati div vertikalno i vodoravno s CSS apsolutnim pozicioniranjem i negativnim marginama
Ovo je vrlo slično gornjoj metodi za centriranje elementa okomito. Kao i prošli put, morate znati širinu i visinu elementa koji želite centrirati.
Postavite display
svojstvo nadređenog elementa na relative
.
Zatim postavite djetetovo display
svojstvo na absolute
, top
na 50%
i left
na 50%
. Ovo samo centrira gornji lijevi kut podređenog elementa okomito i vodoravno.
Da biste doista centrirali podređeni element, primijenite negativnu gornju marginu postavljenu na polovicu visine podređenog elementa i negativnu lijevu marginu postavljenu na polovicu širine podređenog elementa:
.container { ... position: relative; } .child { width: 50px; height: 50px; background-color: red; /* Center vertically and horizontally */ position: absolute; top: 50%; left: 50%; margin: -25px 0 0 -25px; /* apply negative top and left margins to truly center the element */ }

Kako centrirati div okomito i vodoravno s Transform and Translate
Use this method to center an element vertically and horizontally if you don't know its exact dimensions and can't use Flexbox.
First, set the display
property of the parent element to relative
.
Next, set the child element's display
property to absolute
, top
to 50%
, and left
to 50%
.
Finally, use transform: translate(-50%, -50%)
to truly center the child element:
.container { ... position: relative; } .child { ... position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }

How to Center a Div Vertically and Horizontally with Flexbox
Flexbox is the easiest way to center an element both vertically and horizontally.
This is really just a combination of the two previous Flexbox methods. Then apply justify-content: center
and align-items: center
to center the child element(s) horizontally and vertically:
.container { ... display: flex; justify-content: center; align-items: center; }

That's everything you need to know to center with the best of 'em. Now go forth and center all the things.