Центральна вертикальна та горизонтальна вирівнювання Bootstrap 4


163

У мене є сторінка, де існує лише форма, і я хочу розмістити форму в центрі екрана.

<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>

У justify-content-centerпоєднується форма по горизонталі, але не можу зрозуміти, як вирівняти його по вертикалі. Я намагався використовувати align-items-centerі align-self-center, але він не працює.

Що я пропускаю?

DEMO

Відповіді:


322

Оновлення 2019 - Bootstrap 4.3.1

Там немає ніякої необхідності для додаткової CSS . Те, що вже включено до Bootstrap, працюватиме. Переконайтесь, що контейнер (и) форми на повний зріст . Bootstrap 4 тепер має h-100клас на 100% висоти ...

Вертикальний центр:

<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

висота контейнера з предметами до центру повинна бути 100% (або будь-яка бажана висота відносно централізованого предмета)

Примітка. При використанні height:100%( відсоткова висота ) будь-якого елемента елемент займає висоту контейнера . У сучасних браузерах vh height:100vh;можна використовувати замість того, %щоб отримати бажану висоту.

Тому ви можете встановити html, body {висоту: 100%} або використовувати новий min-vh-100клас на контейнері замість h-100.


Горизонтальний центр:

  • text-centerдо центру display:inlineелементів та вмісту стовпців
  • mx-auto для центрування всередині гнучких елементів
  • offset-*або mx-autoможна використовувати для центру стовпців ( .col-)
  • justify-content-centerдо центру стовпців ( col-*) всерединіrow

Центр вертикальної вирівнювання у Bootstrap 4
Bootstrap 4 у повноекранному форматі
Bootstrap 4 центральна група вводу
Bootstrap 4 горизонтальний + вертикальний повний екран у центрі


Чи правильно використовувати <section>тег чи слід дотримуватися <div>s для центрування вмісту по горизонталі та вертикалі у вікні перегляду? У мене є існуючий сайт, на якому є сторінки з розділами, які змінюють колір та / або фонові зображення.
Адріан

Чи не повинен жоден прямий дитина ряду бути .col?
Мігель Стівенс

7
Ця відповідь трохи зламана. Ви чітко заявляєте, що "НЕ ТРЕБА для додаткових CSS", але це неправильно. У вашому зразку коду видно, що ви повинні встановити body та html на 100% у CSS поза Bootstrap 4. Без цього додаткового CSS ваше рішення не працює.
майор-майор

1
Ні, body і html не знаходяться "поза". Класи CSS Bootstrap також можуть бути додані до них! codeply.com/go/5ifNMHKUEy @dawn .. що конкретно не працювало? Ваш коментар не корисний.
Зім

Контейнер не потребував 100%, але h-100 justify-content-center align-items-centerпрацював
JMP

18

Ця робота для мене:

<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>

1
Не забудьте додати стилі css:<style type="text/css"> html, body{ height: 100%; } .full-page{ height: 100vh; width: 100vw; } </style>
pyOwner


10

Вам потрібно щось, щоб зосередити форму. Але оскільки ви не вказали висоту для свого html та body, він би просто загортав вміст - а не перегляд. Іншими словами, не було місця, куди можна було б зосереджувати предмет.

html, body {
  height: 100%;
}
.container, .row.justify-content-center.align-items-center {
  height: 100%;
  min-height: 100%;
}

1
Також h-100клас util можна використовувати height:100%в Bootstrap 4.
Zim

1
Тепер я раджу використовувати рішення @ZimSystem, оскільки воно не потребує користувальницьких CSS і використовує лише класи, що надаються Bootstrap.
Брам Ванрой

1
@BramVanroy, як ви сказали, я використовував рішення ZimSystem, але це не працювало для мене. ваше рішення, що працює як на оновленнях версій 4.0.0, так і на 4.0.0
Сахан Пасінду Nirmal,

9

Bootstrap має текстовий центр для центрування тексту. Наприклад

<div class="container text-center">

Ви змінюєте наступне

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

до наступного

<div class="row text-center">

7

Жоден не працював на мене. Але його так і зробив.

Оскільки тепер відображається клас Bootstrap 4 .row: flex, ви можете просто скористатися новою утилітою flexbox self-center у будь-якому стовпчику, щоб вертикально її центрировать:

<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>

Я дізнався про це з https://medium.com/wdstack/bootstrap-4-vertical-center-1211448a2eff


2

Це працює в IE 11 з Bootstrap 4.3 . Хоча в моєму випадку інші відповіді не працювали в IE11.

 <div class="row mx-auto justify-content-center align-items-center flex-column ">
    <div class="col-6">Something </div>
</div>

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>



0

Я закінчився тут, тому що у мене виникли проблеми із сіткою Bootstrap 4 і кутовим циклом * ngFor. Я виправив це, застосувавши клас col justify-content-center до div, що реалізує 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>

що дає результат: введіть тут опис зображення


0

З док. (Завантажувальний 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.