Mai mult
Flexbox: centru pe orizontală și pe verticală
Cum pentru centrul div orizontală, și pe verticală în interiorul containerului cu ajutorul flexbox. În exemplu de mai jos, vreau fiecărui număr de mai jos fiecare alte (rânduri), care sunt centrate pe orizontală.
.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
10
Cred ca vrei ceva de genul următor.
Vezi demo-ul la: http://jsfiddle.net/audetwebdesign/tFscL/
Ta
.flex-element
elemente ar trebui să fie la nivel de bloc (div
în loc despan
), dacă doriți înălțimea și top/bottom padding pentru a funcționa corect.De asemenea, pe
.rând, setați lățimea la "auto" în loc de
100%`.Ta `.flex-container de proprietăți sunt bine.
Dacă vrei.rând să fie centrat pe verticală în portul de vizualizare, atribui 100% înălțimea la
html
și "corpul", și, de asemenea, zero "corpul" a marjelor.Rețineți că.flex-container are o înălțime pentru a vedea alinierea verticală efect, în caz contrar, container calculează înălțimea minimă necesară pentru a încadra conținutul, care este mai mică decât portul de vizualizare înălțime în acest exemplu.
Nota de subsol: Anii
flex-flow
,flex-direcție
,flex-folie de proprietăți ar putea fi făcut acest design mai ușor să pună în aplicare. Cred că.rând
container nu este necesară dacă doriți să adăugați unele styling jurul elementelor (imagine de fundal, frontiere și așa mai departe).O resursă utilă este: http://demo.agektmr.com/flexbox/
Cum pentru Centrul de Elemente pe Verticală și pe Orizontală în Flexbox
Mai jos sunt două general de centrare soluții.
Unul vertical aliniat flex elemente (
flex-direcție: coloana
) și alta orizontală-aliniat flex elemente (flex-direcție: rând
).În ambele cazuri, înălțimea centrat divs poate fi variabilă, nedefinit, necunoscut, orice. Înălțimea centrat divs nu't contează.
Aici's HTML pentru ambele:
CSS (cu excepția stiluri decorative)
Când flex elemente sunt așezate vertical:
[DEMO](http://jsfiddle.net/8o29y7pd/)
Când flex elemente sunt așezate orizontal:
Reglați `flex-direcția regula din codul de mai sus.
[DEMO](http://jsfiddle.net/8o29y7pd/3/)
Centrarea conținutului flex elemente
Domeniul de aplicare al o flex formatare context este limitată la o relație părinte-copil. Descendenții unui flex recipient dincolo copiii nu participă la flex layout și va ignora flex proprietăți. În esență, flex proprietăți nu sunt transmisibile dincolo copii.
Prin urmare, va trebui întotdeauna să se aplice
display: flex " sau " display: inline-flex
de la un element părinte, în scopul de a aplica flex proprietăți pentru copil.În scopul de a vertical și/sau orizontal centru de text sau alte tipuri de conținut conținute într-un flex element, face un element (imbricate) flex container, și se repetă de centrare reguli.
Mai multe detalii aici: https://stackoverflow.com/q/25311541/3597276
Alternativ, puteți aplica
margin: auto
la conținutul element de flex element.Afla despre flex "auto" marjele de aici: Metode pentru Alinierea Flex Elemente (a se vedea caseta#56).
Centrare mai multe linii de flex elemente
Atunci când un flex container are mai multe linii (din cauza ambalaj) la `align-conținutul de proprietate va fi necesar pentru cross-axa de aliniere.
De la spec.:
Mai multe detalii aici: https://stackoverflow.com/q/42613359/3597276
suport pentru Browser-ul
Flexbox este susținută de toate browserele majore, cu excepția IE < 10. Unele recente versiuni de browser, cum ar fi Safari 8 și IE10, necesită furnizor de prefixe. Pentru o modalitate rapidă de a adăuga prefixe folosi Autoprefixer. Mai multe detalii în acest răspuns.
Centrarea soluție pentru browsere mai vechi
Pentru o alternativă de centrare soluție folosind CSS masă și proprietățile de poziționare a vedea acest răspuns: https://stackoverflow.com/a/31977476/3597276
Adauga
pentru elementul container de ce vrei să center. Documentație: justifica-conținut și align-articole.
Don't uitat să utilizați browsere web importante atribute specifice:
aliniați-elemente: center; -->
justifica-conținut: center; -->
Ai putea să citească aceste două link-uri pentru o mai bună înțelegere flex: http://css-tricks.com/almanac/properties/j/justify-content/ și http://ptb2.mi/flexbox/
Noroc.
1 - Set CSS pe div părinte să
display: flex;
2 - Set CSS pe div părinte să
flex-direcție: coloană;
Rețineți că acest lucru va face toate conținut în care div linie de sus pana jos. Aceasta va funcționa cel mai bine dacă părintele div conține doar copilul și nimic altceva.
3 - Set CSS pe div părinte să-și justifica-conținut: center;`
Aici este un exemplu a ceea ce CSS va arata asa:
diplay: flex; pentru a's container și
margin:auto; pentru a's element funcționează perfect.NOTĂ: trebuie să setați "lățime" și "înălțime" pentru a vedea efectul.
margin: auto
funcționează perfect cu flexbox. Se centralizează pe verticală și pe orizontală.Dacă aveți nevoie pentru a centra un text într-o legătură, acest lucru va face truc:
Puteți face uz de
display: flex; aliniați-elemente: center; justifica-conținut: center;
pe părintele tău componentă
https://repl.it/repls/TomatoImaginaryInitialization
Folosind CSS+
avea o privire de AICI