Vairāk
Flexbox: centrēšana horizontāli un vertikāli
Kā centrēt div horizontāli un vertikāli konteinerā, izmantojot flexbox. Tālāk dotajā piemērā es gribu, lai katrs skaitlis būtu zem otra (rindās), kas ir centrēti horizontāli.
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
align-items: center;
justify-content: center;
}
row {
width: 100%;
}
.flex-item {
background: tomato;
padding: 5px;
width: 200px;
height: 150px;
margin: 10px;
line-height: 150px;
color: white;
font-weight: bold;
font-size: 3em;
text-align: center;
}
<div class="flex-container">
<div class="row">
<span class="flex-item">1</span>
</div>
<div class="row">
<span class="flex-item">2</span>
</div>
<div class="row">
<span class="flex-item">3</span>
</div>
<div class="row">
<span class="flex-item">4</span>
</div>
</div>
579
3
Es domāju, ka jums ir nepieciešams kaut kas līdzīgs šādam.
Skatiet demo: http://jsfiddle.net/audetwebdesign/tFscL/
Jūsu
.flex-item
elementiem jābūt bloka līmeņa (div
, nevisspan
), ja vēlaties, lai augstums un augšējā/apakšējā izvietojums darbotos pareizi.Turklāt
.row
iestatiet platumuautomātiski
, nevis100%
.Jūsu
.flex-container
īpašības ir kārtībā.Ja vēlaties, lai
.rinda
būtu vertikāli centrēta skata portā, piešķiriethtml
unbody
100% augstumu un arībody
apmales no nulles.Ņemiet vērā, ka
.flex-container
ir nepieciešams augstums, lai redzētu vertikālās izlīdzināšanas efektu, pretējā gadījumā konteiners aprēķina minimālo augstumu, kas nepieciešams, lai ietvertu saturu, kas šajā piemērā ir mazāks par skata porta augstumu.Piezīme: Šo konstrukciju būtu bijis vieglāk īstenot ar
flex-flow
,flex-direction
,flex-wrap
īpašībām. Manuprāt, konteiners.row
nav nepieciešams, ja vien nevēlaties elementiem pievienot kādu stilu (fona attēlu, apmales utt.).Noderīgs resurss ir: http://demo.agektmr.com/flexbox/
Elementu centrēšana vertikāli un horizontāli Flexbox logrīkā
Zemāk ir divi vispārīgi centrēšanas risinājumi.
Viens vertikāli izlīdzinātiem elastīgajiem elementiem (
flex-direction: column
) un otrs horizontāli izlīdzinātiem elastīgajiem elementiem (flex-direction: row
).Abos gadījumos centrēto divs var būt mainīgs, nenoteikts, nezināms vai kāds cits. Centrēto divs augstumam nav nozīmes.
Turpmāk ir HTML abiem gadījumiem:
CSS (izņemot dekoratīvos stilus)
Kad flex elementi ir sakrauti vertikāli:
[![šeit ievadiet attēla aprakstu][2]][2]
[DEMO](http://jsfiddle.net/8o29y7pd/)
Ja elastīgie elementi ir sakrauti horizontāli:
Pielāgojiet
flex-direction
noteikumu no iepriekš minētā koda.[![šeit ievadiet attēla aprakstu][3]][3]
[DEMO](http://jsfiddle.net/8o29y7pd/3/)
Elastīgo elementu satura centrēšana
flex formatēšanas konteksta darbības joma ir ierobežota līdz vecāku un bērnu attiecībām. Flex konteinera pēcnācēji ārpus bērniem nepiedalās flex izkārtojumā un ignorē flex īpašības. Būtībā flex īpašības nav pārmantojamas ārpus bērniem.
Tādējādi, lai piemērotu elastīgās īpašības atvasinātajam elementam, vienmēr jāpiemēro
display: flex
vaidisplay: inline-flex
vecākam elementam.Lai vertikāli un/vai horizontāli centrētu tekstu vai citu saturu, kas ietverts elastīgā elementā, izveidojiet elementu par (ieliktu) elastīgu konteineru un atkārtojiet centrēšanas noteikumus.
Sīkāka informācija šeit: https://stackoverflow.com/q/25311541/3597276
Kā alternatīvu var piemērot
margin: auto
elastīgā elementa satura elementam.Uzziniet vairāk par flex
auto
margām šeit: Flex elementu izlīdzināšanas metodes (skat. lodziņu#56).Vairāku rindu flex elementu centrēšana
Ja flex konteineram ir vairākas rindas (ietīšanas dēļ), īpašība
align-content
ir nepieciešama, lai veiktu izlīdzināšanu starp asīm.Sīkāka informācija šeit: https://stackoverflow.com/q/42613359/3597276
Pārlūkprogrammas atbalsts
Flexbox atbalsta visas galvenās pārlūkprogrammas [izņemot IE
Neaizmirstiet izmantot svarīgus pārlūkprogrammām raksturīgus atribūtus:
izlīdzināt-items: center; -->
justify-content: center; -->
Jūs varētu izlasīt šīs divas saites, lai labāk izprastu flex: http://css-tricks.com/almanac/properties/j/justify-content/ un http://ptb2.me/flexbox/
Veiksmi.