Bootstrap 4 Wyśrodkowanie w pionie i poziomie

163

Mam stronę, na której istnieje tylko formularz i chcę, aby formularz był umieszczony na środku ekranu.

<div class="container">
  <div class="row justify-content-center align-items-center">
    <form>
      <div class="form-group">
        <label for="formGroupExampleInput">Example label</label>
        <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
      </div>
      <div class="form-group">
        <label for="formGroupExampleInput2">Another label</label>
        <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
      </div>
    </form>   
  </div>  
</div>

W justify-content-centerWyrównuje forma poziomo, ale nie mogę dowiedzieć się, jak dostosować go pionowo. Próbowałem użyć align-items-centeri align-self-center, ale to nie działa.

czego mi brakuje?

PRÓBNY

user348173
źródło

Odpowiedzi:

322

Aktualizacja 2019 - Bootstrap 4.3.1

Nie ma potrzeby za dodatkową CSS . To, co jest już zawarte w Bootstrap, będzie działać. Upewnij się, że pojemnik (y) formularza mają pełną wysokość . Bootstrap 4 ma teraz h-100klasę 100% wysokości ...

Centrum w pionie:

<div class="container h-100">
  <div class="row h-100 justify-content-center align-items-center">
    <form class="col-12">
      <div class="form-group">
        <label for="formGroupExampleInput">Example label</label>
        <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
      </div>
      <div class="form-group">
        <label for="formGroupExampleInput2">Another label</label>
        <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
      </div>
    </form>   
  </div>
</div>

https://www.codeply.com/go/raCutAGHre

wysokość pojemnika z elementem (-ami) na środku powinna wynosić 100% (lub dowolna żądana wysokość w stosunku do elementu wyśrodkowanego)

Uwaga: Używając height:100%( procent wysokości ) na dowolnym elemencie, element przyjmuje wysokość swojego kontenera . W nowoczesnych przeglądarkach height:100vh;można używać jednostek vh zamiast, %aby uzyskać żądaną wysokość.

Dlatego możesz ustawić html, body {height: 100%} lub użyć nowej min-vh-100klasy w kontenerze zamiast h-100.


Centrum poziome:

  • text-centeraby wyśrodkować display:inlineelementy i zawartość kolumny
  • mx-auto do centrowania wewnątrz elementów elastycznych
  • offset-*lub mx-automoże służyć do wyśrodkowania kolumn ( .col-)
  • justify-content-centerdo kolumn center ( col-*) wewnątrzrow

Vertical Align Center in Bootstrap 4
Bootstrap 4 pełnoekranowy wyśrodkowany format
Bootstrap 4 środkowa grupa wejściowa
Bootstrap 4 poziomy + pionowy środkowy pełny ekran

Zim
źródło
Czy można użyć <section>tagu, czy też należy trzymać się <div>s, aby wyśrodkować zawartość w widoku w poziomie i w pionie? Mam istniejącą witrynę, która zawiera strony z sekcjami, które zmieniają kolor i / lub obrazy tła.
Adrian
Czy bezpośrednie dziecko rzędu nie powinno być rozszerzeniem .col?
Miguel Stevens
7
Ta odpowiedź jest nieco zepsuta. Wyraźnie stwierdzasz, że „NIE MA POTRZEBY dodatkowego CSS”, ale to nieprawda. Przykładowy kod pokazuje, że musisz ustawić body i html na 100% w CSS poza Bootstrap 4. Bez tego dodatkowego CSS Twoje rozwiązanie nie będzie działać.
Major Major
1
Nie, body i html nie są „na zewnątrz”. Można do nich również dodać klasy Bootstrap CSS! codeply.com/go/5ifNMHKUEy @dawn .. co konkretnie nie działało? Twój komentarz nie jest pomocny.
Zim
Kontener nie potrzebował 100%, ale h-100 justify-content-center align-items-centerdziałał
JMP
18

Ta praca dla mnie:

<section class="h-100">
  <header class="container h-100">
    <div class="d-flex align-items-center justify-content-center h-100">
      <div class="d-flex flex-column">
        <h1 class="text align-self-center p-2">item 1</h1>
        <h4 class="text align-self-center p-2">item 2</h4>
        <button class="btn btn-danger align-self-center p-2" type="button" name="button">item 3</button>
      </div>
    </div>
  </header>
</section>
karembadawy
źródło
1
Nie zapomnij dodać stylów CSS:<style type="text/css"> html, body{ height: 100%; } .full-page{ height: 100vh; width: 100vw; } </style>
pyOwner
15

Flexbox może ci pomóc. info tutaj

<div class="d-flex flex-row justify-content-center align-items-center" style="height: 100px;">
    <div class="p-2">
     1
    </div>
    <div class="p-2">
     2
    </div>
</div>
odcienie 3002
źródło
10

Potrzebujesz czegoś, na czym wyśrodkujesz swoją formę. Ale ponieważ nie określiłeś wysokości swojego kodu HTML i treści, po prostu zawiniesz zawartość - a nie widok. Innymi słowy, nie było miejsca na wyśrodkowanie elementu.

html, body {
  height: 100%;
}
.container, .row.justify-content-center.align-items-center {
  height: 100%;
  min-height: 100%;
}
Bram Vanroy
źródło
1
Również h-100klasa util może być używana height:100%w Bootstrap 4.
Zim,
1
Teraz radzę używać rozwiązania @ZimSystem, ponieważ nie wymaga ono niestandardowego CSS i korzysta tylko z klas dostarczonych przez Bootstrap.
Bram Vanroy
1
@BramVanroy, jak powiedziałeś, korzystałem z rozwiązania ZimSystem, ale nie zadziałało. Twoje rozwiązanie działa również z aktualizacją wersji 4.0.0 i 4.1.0
Sahan Pasindu Nirmal
9

Bootstrap ma centrum tekstu do wyśrodkowania tekstu. Na przykład

<div class="container text-center">

Zmieniasz następujące

<div class="row justify-content-center align-items-center">

do następujących

<div class="row text-center">
ciaran kehoe
źródło
7

Żaden nie pracował dla mnie. Ale jego jeden tak.

Ponieważ klasa Bootstrap 4 .row jest teraz display: flex, możesz po prostu użyć nowego narzędzia align-self-center flexbox na dowolnej kolumnie, aby wyśrodkować ją w pionie:

<div class=”row”>
   <div class=”col-6 align-self-center>
      <div class=”card card-block>
      Center
      </div>
   </div>
   <div class=”col-6">
      <div class=”card card-inverse card-danger>
      Taller
      </div>
   </div>
</div>

Dowiedziałem się o tym z https://medium.com/wdstack/bootstrap-4-vertical-center-1211448a2eff

Paulo Pedroso
źródło
2

To działa w IE 11 z Bootstrap 4.3 . Podczas gdy inne odpowiedzi w moim przypadku nie działały w IE11.

 <div class="row mx-auto justify-content-center align-items-center flex-column ">
    <div class="col-6">Something </div>
</div>
Waqas Bukhary
źródło
0

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <div class="col-12 border border-info">
          <div class="d-flex justify-content-center align-items-center" style="height: 100px">
              <a href="#" class="btn btn-dark">Transfer</a>
              <a href="#" class="btn btn-dark mr-2 ml-2">Replenish</a>
              <a href="#" class="btn btn-dark mr-3">Account Details</a>
          </div>
    </div>

Levan Jintcharadze
źródło
0

Użyj tego kodu w CSS:

.container {
    width: 600px;
    height: 350px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: inline-flex;
}
Balwinder Singh Sohi
źródło
0

Skończyło się tutaj, ponieważ miałem problem z systemem siatki Bootstrap 4 i pętlą Angular * ngFor. Naprawiłem to, stosując klasę col justify-content-center do elementu div implementującego ngFor:

<div class="row" style="border:1px solid red;">
  <div class="col d-flex justify-content-center">
    <button mat-raised-button>text</button>
  </div>
  <div *ngFor="let text of buttonText" class="col d-flex justify-content-center">
    <button mat-raised-button>text</button>
  </div>
</div>

co daje wynik: wprowadź opis obrazu tutaj

Fletch
źródło
0

Z dokumentu (bootsrap 4):

https://getbootstrap.com/docs/4.0/utilities/flex/#justify-content

.justify-content-start
.justify-content-end
.justify-content-center
.justify-content-between
.justify-content-around
.justify-content-sm-start
.justify-content-sm-end
.justify-content-sm-center
.justify-content-sm-between
.justify-content-sm-around
.justify-content-md-start
.justify-content-md-end
.justify-content-md-center
.justify-content-md-between
.justify-content-md-around
.justify-content-lg-start
.justify-content-lg-end
.justify-content-lg-center
.justify-content-lg-between
.justify-content-lg-around
.justify-content-xl-start
.justify-content-xl-end
.justify-content-xl-center
.justify-content-xl-between
.justify-content-xl-around
Mohamed Allal
źródło