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-centeralign-self-center、それは動作しません。

何が欠けていますか?

デモ

回答:


322

更新2019 -ブートストラップ4.3.1

ありません不要のため、余分なCSSは。Bootstrapに既に含まれているものが機能します。フォームのコンテナが完全な高さであることを確認してください。Bootstrap 4には、h-100100%の高さのクラスがあります...

垂直中心:

<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%パーセントの高さ)を使用する場合、要素はそのコンテナの高さを取ります。最新のブラウザでは、目的の高さを取得するheight:100vh;代わりにvhユニットを使用できます%

したがって、html、body {height:100%}を設定するか、のmin-vh-100代わりにコンテナで新しいクラスを使用できますh-100


水平中心:

  • text-centerdisplay:inline要素と列のコンテンツを中央に配置する
  • mx-auto フレックス要素の中央に配置
  • offset-*または、列の中央揃えにmx-auto使用できます.col-
  • justify-content-centercol-*)を中央に配置するrow

ブートストラップ4の垂直方向の中央揃え
ブートストラップ4フルスクリーンの中央揃えフォーム
ブートストラップ4中央入力グループ


<section>タグを使用してもよろしいですか、または<div>ビューポートでコンテンツを水平および垂直に中央揃えするためにsに固執する必要がありますか?色や背景画像を変更するセクションがあるページがある既存のサイトを持っています。
エイドリアン

行の直接の子は.colにすべきではありませんか?
ミゲルスティーブンス

7
この答えは少し壊れています。「追加のCSSは必要ありません」と明示的に述べていますが、それは誤りです。コードサンプルでは、​​Bootstrap 4の外部のCSSでbodyとhtmlを100%に設定する必要があることを示しています。この追加のCSSがないと、ソリューションは機能しません。
メジャーメジャー

1
いいえ、bodyとhtmlは「外部」ではありません。BootstrapCSSクラスもそれらに追加できます!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 '26

15

flexboxが役立ちます。情報はこちら

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

10

フォームの中央に何かが必要です。しかし、htmlとbodyの高さを指定しなかったため、ビューポートではなく、コンテンツをラップするだけです。つまり、アイテムを中央に配置する場所がありませんでした。

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

1
また、h-100utilのクラスがために使用することができるheight:100%ブートストラップ4で
Zimを

1
@ZimSystemのソリューションを使用することをお勧めします。カスタムCSSを必要とせず、Bootstrapによって提供されるクラスのみを使用するためです。
Bram Vanroy、2017

1
@BramVanroyは、私がZimSystemのソリューションを使用したと伝えましたが、それは私にはうまくいきませんでした。バージョン4.0.0と4.1.0の両方のアップデートで機能するソリューション
Sahan Pasindu Nirmal

9

Bootstrapには、テキストを中央揃えにするtext-centerがあります。例えば

<div class="container text-center">

次を変更します

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

次へ

<div class="row text-center">

7

どれも私のために働いていません。しかし、彼はそうしました。

Bootstrap 4の.rowクラスはdisplay:flexになっているので、任意の列で新しいalign-self-center flexboxユーティリティを使用して、垂直方向に中央揃えすることができます。

<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

CSSでこのコードを使用:

.container {
    width: 600px;
    height: 350px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: inline-flex;
}

0

Bootstrap 4グリッドシステムとAngular * ngForループに問題があったため、私はここで終わりました。ngForを実装するdivにcol justify-content-centerクラスを適用して修正しました。

<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

ドキュメントから(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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.