Jak wyśrodkować div poziomo i pionowo w kontenerze za pomocą Flexbox. W poniższym przykładzie chcę, aby każda liczba była pod sobą (w rzędach), które są wyśrodkowane w poziomie.
.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>
row{
co nie ma wpływu na wiersze. Jeśli zmienisz to.row{
na wynik, będzie zupełnie inaczej.Odpowiedzi:
Myślę, że chcesz czegoś takiego.
Zobacz demo na: http://jsfiddle.net/audetwebdesign/tFscL/
Twoje
.flex-item
elementy powinny być na poziomie bloku (div
zamiastspan
), jeśli chcesz wysokość i górną / dolną dopełnienie do pracy prawidłowo.Ponadto,
.row
ustaw szerokość naauto
zamiast100%
.Twoje
.flex-container
nieruchomości są w porządku.Jeśli chcesz,
.row
aby były wyśrodkowane pionowo w porcie widoku, przypisz 100% wysokości dohtml
ibody
, a także wyzerujbody
marginesy.Zauważ, że
.flex-container
potrzebna jest wysokość, aby zobaczyć efekt wyrównania w pionie, w przeciwnym razie kontener oblicza minimalną wysokość potrzebną do zamknięcia zawartości, która jest mniejsza niż wysokość portu widoku w tym przykładzie.Przypis: , , właściwości mógł stworzyć ten projekt łatwiejsze do wdrożenia. Myślę, że pojemnik nie jest potrzebny, chyba że chcesz dodać stylizację wokół elementów (obraz tła, obramowania i tak dalej).
flex-flow
flex-direction
flex-wrap
.row
Przydatnym zasobem jest: http://demo.agektmr.com/flexbox/
źródło
Jak wyśrodkować elementy w pionie i poziomie w Flexbox
Poniżej znajdują się dwa ogólne rozwiązania centrowania.
Jeden dla elementów elastycznych wyrównanych w pionie (
flex-direction: column
), a drugi dla elementów elastycznych wyrównanych w poziomie (flex-direction: row
).W obu przypadkach wysokość wyśrodkowanych div może być zmienna, niezdefiniowana, nieznana, cokolwiek. Wysokość wyśrodkowanych div nie ma znaczenia.
Oto kod HTML dla obu:
CSS (z wyłączeniem stylów dekoracyjnych)
Gdy elementy elastyczne są ułożone pionowo:
PRÓBNY
Gdy elementy elastyczne są ułożone poziomo:
Dostosuj
flex-direction
regułę z powyższego kodu.PRÓBNY
Centrowanie zawartości elementów elastycznych
Zakres kontekstu formatowania elastycznego jest ograniczony do relacji rodzic-dziecko. Potomkowie kontenera elastycznego poza dziećmi nie uczestniczą w układzie flex i będą ignorować właściwości flex. Zasadniczo właściwości flex nie są dziedziczone poza dziećmi.
Stąd, zawsze trzeba stosować
display: flex
albodisplay: inline-flex
do elementu nadrzędnego w celu zastosowania właściwości Flex dziecka.Aby wyśrodkować tekst w pionie i / lub w poziomie lub inną zawartość zawartą w elemencie flex, ustaw element jako (zagnieżdżony) kontener flex i powtórz reguły centrowania.
Więcej informacji tutaj: Jak wyrównać tekst pionowo w flexbox?
Alternatywnie można zastosować
margin: auto
do elementu treści elementu flex.Dowiedz się więcej o
auto
marginesach elastyczności tutaj: Metody wyrównywania elementów elastycznych (patrz ramka # 56).Centrowanie wielu linii elementów elastycznych
Gdy elastyczny kontener ma wiele linii (z powodu zawijania),
align-content
właściwość będzie konieczna do wyrównania osi.Ze specyfikacji:
Więcej informacji tutaj: Jak flex-wrap działa z align-self, align-items i align-content?
Obsługa przeglądarki
Flexbox jest obsługiwany przez wszystkie główne przeglądarki, z wyjątkiem IE <10 . Niektóre najnowsze wersje przeglądarek, takie jak Safari 8 i IE10, wymagają prefiksów dostawców . Aby szybko dodać prefiksy, skorzystaj z Autoprefixera . Więcej szczegółów w tej odpowiedzi .
Rozwiązanie centrujące dla starszych przeglądarek
Aby znaleźć alternatywne rozwiązanie centrowania wykorzystujące właściwości tabeli CSS i właściwości pozycjonowania, zobacz tę odpowiedź: https://stackoverflow.com/a/31977476/3597276
źródło
Dodaj
do elementu kontenera tego, co chcesz wyśrodkować. Dokumentacja: justify-content i align-items .
źródło
display: inline-flex
w moim przypadku, ale to była łatwa edycja).Nie zapomnij użyć ważnych atrybutów przeglądarki:
elementy wyrównujące: środek; ->
justify-content: center; ->
Możesz przeczytać te dwa linki, aby lepiej zrozumieć flex: http://css-tricks.com/almanac/properties/j/justify-content/ i http://ptb2.me/flexbox/
Powodzenia.
źródło
1 - Ustaw CSS dla rodzica div na
display: flex;
2 - Ustaw CSS na nadrzędnym div na
flex-direction: column;
Zwróć uwagę, że spowoduje to, że cała zawartość w tym div div będzie od góry do dołu. Działa to najlepiej, jeśli div rodzica zawiera tylko dziecko i nic więcej.
3 - Ustaw CSS dla rodzica div na
justify-content: center;
Oto przykład, jak będzie wyglądał CSS:
źródło
Możesz skorzystać z
display: flex; align-items: center; justify-content: center;
na komponencie nadrzędnym
https://repl.it/repls/TomatoImaginaryInitialization
źródło
diplay: flex;
za jego pojemnik imargin:auto;
przedmiot działa idealnie.UWAGA: Musisz skonfigurować
width
i,height
aby zobaczyć efekt.źródło
Jeśli chcesz wyśrodkować tekst w linku, to załatwi sprawę:
źródło
margin: auto
działa idealnie z Flexbox. Centralizuje się w pionie i poziomie.źródło
WYNIK:
KOD
HTML:
CSS:
gdzie
flex-container
div służy do wyśrodkowania w pionie i poziomierows
div, arows
div służy do grupowania twoich „przedmiotów” i porządkowania ich w kolumnach.źródło
źródło
Korzystanie z CSS +
spójrz TUTAJ
źródło